我想统计一个迭代器有多少个成员满足给定的条件。我想以一种清楚简单的方式来完成,最好是合理的。什么是在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