是否有一種方法可以在速記嵌套循環中添加滿足條件的所有條件?我下面嘗試失敗:在Python中計算滿足條件的所有條件
count += 1 if n == fresh for n in buckets['actual'][e] else 0
是否有一種方法可以在速記嵌套循環中添加滿足條件的所有條件?我下面嘗試失敗:在Python中計算滿足條件的所有條件
count += 1 if n == fresh for n in buckets['actual'][e] else 0
使用sum
與發電機的表達:
sum(n == fresh for n in buckets['actual'][e])
爲True == 1
和False == 0
,所以不需要else
。
相關閱讀:Is it Pythonic to use bools as ints? ,Is False == 0 and True == 1 in Python an implementation detail or is it guaranteed by the language?
使用sum()
功能:
sum(1 if n == fresh else 0 for n in buckets['actual'][e])
或:
sum(1 for n in buckets['actual'][e] if n == fresh)
如果你覺得不舒服隱含使用的事實,'真== 1'和'假== 0',您可以通過執行'INT使這個事實明確(n ==新鮮)'。這隻對使代碼更加明顯有用......語言並不在乎。 – SethMMorton
當然,但也有[顯式優於隱式](http://www.python.org/dev/peps/pep-0020/)。我個人不在意,但是這是爲了防止OP對隱式使用'bool's'int'的直覺反應。要明確,我並不是說你錯了......我的意見是爲OP準備的附錄,以防他們想要編寫更多的自我記錄代碼。 – SethMMorton