我想統計一個迭代器有多少個成員滿足給定的條件。我想以一種清楚簡單的方式來完成,最好是合理的。什麼是在Python中做countif的好方法
我目前最好的思路是:
sum(meets_condition(x) for x in my_list)
和
len([x for x in my_list if meets_condition(x)])
基於第一個是迭代器大概是更快的大名單。它和你用來測試任何和所有東西的形式是一樣的。然而這取決於int(True)== 1,這有點難看。
第二個看起來比較容易閱讀,但它與任何形式和所有形式都不同。
有沒有人有更好的建議?有沒有一個庫函數我失蹤了?
地圖和過濾器似乎有利於列表內涵和發電機的這些天被皺起了眉頭 – 2010-04-15 09:20:21
@tolomea:真(據瞭解,圭多不喜歡他們那麼多:看到http://www.artima.com/weblogs/viewpost.jsp?thread=98196),雖然目前只有'reduce'被安排去除。這就是說,正如在我的回答中,我認爲在這個特定情況下'sum(meet_condition(x)for my_list)'是最好的解決方案。 – ChristopheD 2010-04-15 09:29:28
reduce並不是真的'計劃清除',它只是被移到了3.x中的functools模塊。 – 2010-04-15 09:52:48