计算可迭代中元素的数量

时间:2014-09-18 10:30:38

标签: python count iterator iterable

在不将元素存储在内存中的情况下,计算可迭代元素数量(通过迭代)的最佳方法是什么?

现在,我正在做sum(1 for x in iterable)。我希望在itertools找到一些东西,但似乎没有任何东西。

2 个答案:

答案 0 :(得分:2)

sum(1 for x in iterable) 最好的方法。并非所有内容都需要专用的itertools功能。 :-)我注意到post you claim not to be a dupe of上的最高投票答案也建议你使用它。

当然,看看itertools以防万一,总是很有价值,如果你这样做,别忘了查看recipes section;你会发现quantify()食谱几乎完全相同,但是使用谓词来过滤迭代:

def quantify(iterable, pred=bool):
    "Count how many times the predicate is true"
    return sum(imap(pred, iterable))

答案 1 :(得分:1)

IMO这个功能应该包含在itertools中,但不是。

more-itertools是一个包含ilen的软件包,但对于您的情况可能有点重量级。当我遇到这种情况时,我只需将常用的解决方法定义为ilen

def ilen(iterable):
    return sum(1 for _ in iterable)