用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,这有点难看。

第二个对我来说似乎更容易阅读,但是它与任何和所有形式都不同。

有没有人有更好的建议?我缺少某处的库函数吗?

回答:

基于迭代器的方法很好。进行一些细微的修改可以强调您正在计数的事实:

sum(1 if meets_condition(x) else 0 for x in my_list)

# or

sum(1 for x in my_list if meets_condition(x))

和往常一样,如果意图从代码中不明显,则将其封装在描述性命名的函数中:

def count_matching(condition, seq):

"""Returns the amount of items in seq that return true from condition"""

return sum(1 for item in seq if condition(item))

count_matching(meets_condition, my_list)

以上是 用Python做countif的好方法是什么 的全部内容, 来源链接: utcz.com/qa/420556.html

回到顶部