我想有效地计算过滤列表的大小,即,我不想将整个过滤列表保存在内存中,我只想获取它的大小。有没有比使用 for 循环计算大小更“pythonic”的方法?
例如:
my_list = [1,2,3,4]
# this loads the entire **filtered** list in memory
size_of_filtered_list = len([item for item in my_list if item % 2 == 0])
# is there a more pythonic way than this?
size_of_filtered_list = 0
for item in my_list:
if item % 2 == 0:
size_of_filtered_list += 1
更新
如果我不清楚,请见谅。虽然第一个列表(例如 my_list)已经在内存中,但我不想创建一个额外的包含过滤元素的列表来计算它们。我知道生成器和求和,但只是没有将这些点联系起来...感谢您的回答。
请您参考如下方法:
size_of_filtered_list = sum(1 for item in my_list if item % 2 == 0)
