gpt4 book ai didi

python - 在特定条件下从列表(或其他可迭代)中获取项目数

转载 作者:IT老高 更新时间:2023-10-28 21:40:40 26 4
gpt4 key购买 nike

假设我有一个包含大量项目的列表,

l = [ 1, 4, 6, 30, 2, ... ]

我想从该列表中获取项目的数量,其中项目满足特定条件。我的第一个想法是:

count = len([i for i in l if my_condition(l)])

但如果过滤后的列表也有很多项目,我认为为过滤后的结果创建一个新列表只是浪费内存。为了效率,恕我直言,上面的调用不能比:

count = 0
for i in l:
if my_condition(l):
count += 1

有没有什么函数式的方法可以在不生成临时列表的情况下获取满足条件的项目数?

最佳答案

您可以使用 generator expression :

>>> l = [1, 3, 7, 2, 6, 8, 10]
>>> sum(1 for i in l if i % 4 == 3)
2

甚至

>>> sum(i % 4 == 3 for i in l)
2

它使用 True == 1False == 0 的事实。

或者,您可以使用 itertools.imap (python 2) 或简单地使用 map (python 3):

>>> def my_condition(x):
... return x % 4 == 3
...
>>> sum(map(my_condition, l))
2

关于python - 在特定条件下从列表(或其他可迭代)中获取项目数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15375093/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com