列表理解中的两个 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
我有一个列表:
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