2013-10-14 178 views

回答

5

使用sum與發電機的表達:

sum(n == fresh for n in buckets['actual'][e]) 

True == 1False == 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?

+0

如果你覺得不舒服隱含使用的事實,'真== 1'和'假== 0',您可以通過執行'INT使這個事實明確(n ==新鮮)'。這隻對使代碼更加明顯有用......語言並不在乎。 – SethMMorton

+0

當然,但也有[顯式優於隱式](http://www.python.org/dev/peps/pep-0020/)。我個人不在意,但是這是爲了防止OP對隱式使用'bool's'int'的直覺反應。要明確,我並不是說你錯了......我的意見是爲OP準備的附錄,以防他們想要編寫更多的自我記錄代碼。 – SethMMorton

1

使用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)