列表理解中的两个 for 循环 python

two for loops in list comprehension python

我有一个列表:

f_array=['1000,1','100,10','100,-10']

我正在尝试对上述数组的每个值中的所有第一个元素求和。我试过类似的东西:

number = sum([ num for num in item.split(",")[1] for item in f_array])

但它确实有效。最好的方法是什么?

如果要使用嵌套循环,则需要交换 for 循环的顺序:

number = sum([num for item in f_array for num in item.split(",")[1]])

列表理解循环以嵌套顺序列出,从左到右与常规Python循环中的嵌套相同:

for item in f_array:
    for num in item.split(",")[1]:

这仍然不行,因为item.split(',')[1]是一个字符串;你最终会循环遍历角色。如果您想每隔一个数字求和,只需 select 那个数字:

item.split(",")[1] for item in f_array

没有必要在那里循环,因为当你 selected 一个元素时没有序列。

您实际上并不想在这里使用列表理解;删除 [...] 方括号使其成为生成器表达式,从而避免完全创建中间列表对象。

如果要求和,还需要将字符串转换为整数:

number = sum(int(item.split(",")[1]) for item in f_array)

演示:

>>> f_array = ['1000,1', '100,10', '100,-10']
>>> sum(int(item.split(",")[1]) for item in f_array)
1