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)已经在内存中,但我不想创建包含已过滤元素的额外列表来计算它们.我知道发电机和总和,但只是没有连接点......谢谢你的答案.
size_of_filtered_list = sum(1 for item in my_list if item % 2 == 0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |