Python 使用索引值列出理解

Python 使用索引值列出理解,python,list,list-comprehension,Python,List,List Comprehension,如何将下面的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]

如何将下面的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]: []
像这样做-

frequencies = sum([int(row[4]) for row in table])

您使用的方法与您想要实现的有点不同。

列表理解与第一个版本完全不同。难道您不希望表中的行使用
[int(第[4]行)]
?“将它们相加”?你说的第一个代码片段没有“添加”任何东西,而是收集了它们。对不起,我错过了添加行(已编辑)。@jornsharpe:我想是
。。。如果i==4]
,即使用枚举索引仅过滤掉第4列。但如果i==4,它们也需要i的
,枚举(行)中的x需要表中的行的
。同意当我们可以简单地切片
行[4]
Nice时,这是不必要的冗余,但是需要“一行解决方案”,所以
求和([int(行[4])用于表中的行)
/是的。将编辑答案。编辑答案
sum
接受任何iterable,因此
[
]
是不需要的
sum(int(第[4]行)表示表中的行)
更清晰,而且可能(稍微)更高效(因为不需要分配列表)。@Amadan轻微的性能改进将是0.001微秒。