【发布时间】:2013-02-28 18:49:42
【问题描述】:
假设我有一个包含大量项目的列表。
l = [ 1, 4, 6, 30, 2, ... ]
我想从该列表中获取项目数,其中项目应满足特定条件。我的第一个想法是:
count = len([i for i in l if my_condition(l)])
但如果 my_condition() 过滤列表也有大量项目,我认为 为过滤结果创建新列表只是浪费内存。为了效率,恕我直言,上面的调用不能比:
count = 0
for i in l:
if my_condition(l):
count += 1
有没有什么函数式的方法可以在不生成临时列表的情况下获得满足特定条件的项目数?
提前致谢。
【问题讨论】:
-
生成器和列表之间的选择是执行时间和内存消耗之间的选择。如果您分析代码,您会惊讶于结果与直觉相反的频率。过早的优化是万恶之源。
标签: python list count functional-programming sequence