有效地计算过滤列表的大小

Bar*_*emy 1 python list-comprehension

我想有效地计算过滤列表的大小,即,我不想将整个过滤列表保留在内存中,我只想获得它的大小.是否有比使用for-loop计算大小更"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
Run Code Online (Sandbox Code Playgroud)

UPDATE

如果我不清楚,请道歉.虽然第一个列表(例如,my_list)已经在内存中,但我不想创建包含已过滤元素的额外列表来计算它们.我知道发电机和总和,但只是没有连接点......谢谢你的答案.

Joh*_*ooy 6

size_of_filtered_list = sum(1 for item in my_list if item % 2 == 0)
Run Code Online (Sandbox Code Playgroud)