【发布时间】:2021-05-31 08:54:48
【问题描述】:
如何将下面的 for 循环转换为列表理解?
我有一个列表列表。每个子列表在索引 4 位置都有一个数字,我想找到一种方法将它们相加。 for 循环有效,但我想要一个带有列表理解的单行解决方案。
frequencies = []
for row in table:
frequencies.append(int(row[4]))
sum(frequencies)
这是我的尝试:
frequencies = [sum(i) for i, x in enumerate(table) if x == 4]
但是,结果是一个空对象。
In[52]: total
Out[52]: []
【问题讨论】:
-
列表理解与第一个版本完全不同。你不想要
[int(row[4]) for row in table]吗? -
“把它们加起来”?你说的第一个 sn-p 不会“加起来”任何东西,而是收集它们。
-
抱歉,我错过了添加行(已编辑)。
-
@jonrsharpe:我认为 OP 的意图是
... if i == 4],即使用枚举索引仅过滤掉第 4 列。但他们也需要for i, x in enumerate(row) for row in table if i == 4]。同意当我们可以简单地切片row[4]时它是不必要的冗余
标签: python list list-comprehension