遍历嵌套列表并在 python 中对每个内部列表的所有元素求和
Looping through a nested list and summing all elements of each internal list in python
我的问题如下:我有一个名为 'All_slips.' 的列表列表 我想遍历列表中的每个列表并对它的所有元素求和,然后将这些总和附加到名为 'Summed_list.' 的新列表因此,我想要的 output/solution 将是 'Summed_list' = [10,16,19]。下面提供了一个最小的可复制程序:
All_slips = [[1,2,3,4],[1,3,5,7],[1,2,7,9]]
Summed_list = []
for j in All_slips[j][] :
counter = 0
for i in All_slips[j][i] :
counter += i
Summed_list.insert(len(Summed_list),counter)
print (Summed_list)
我是 python 的新手,我在第 4 行遇到语法错误:'for j in All_slips[j][]:'。什么是正确的语法来实现我上面所说的 - 我找不到另一个 post 来描述这个问题。预先感谢您的帮助。
summed_list = []
for sublist in All_slips:
summed_list.append(sum(sublist))
就是这样。您还可以使用列表理解。
summed_list = [sum(sublist) for sublist in All_slips]
查看 docs 以了解 for
循环。
python 中的典型 for
循环具有 for item in iterable
类型的语法,您可以使用变量 item
访问 iterable
的成员在循环内。
在你的情况下,如果你想保持两个循环-
for inner_list in All_slips:
inner_sum = 0
for element in inner_list:
inner_sum = inner_sum + element
summmed_list.append(inner_sum)
当然,您不必真正维护这两个循环,因为 sum
是 python -
中的内置函数
for inner_list in All_slips:
inner_sum = sum(inner_list)
summed_list.append(inner_sum)
您可以使用 list comprehension -
更进一步
summed_list = [sum(inner_list) for inner_list in All_slips]
如果您想使用函数式编程方式,这里有一个解决方案
>>> All_slips = [[1,2,3,4],[1,3,5,7],[1,2,7,9]]
>>> summed_list= list(map(sum , All_slips))
>>> summed_list
[10, 16, 19]
否则,下面将是一种易于理解的解决方案
summed_list = [sum(sub_list) for sub_list in All_slips]
如果您想使用 for 循环,则将子列表的总和存储在一个变量中以进行一次迭代,然后将其保存在 summed_list
中
suumed_list = []
for sub_list in All_slips:
sublist_sum = 0
for val in sub_list:
sublist_sum+= val
summed_list.append(sublist_sum)
您可以使用built-in地图功能。它将函数映射到可迭代列表。
map(function, list-of-iterables)
因为 Python 3 这会给你一个 map-generator,因此你可能想把它变成一个列表、集合或任何你喜欢的可迭代对象。
list(map(sum, list-of-iterables))
所以在你的情况下:
>>> All_slips = [[1,2,3,4],[1,3,5,7],[1,2,7,9]]
>>> summed_list = list(map(sum, All_slips))
>>> print(summed_list)
[10, 16, 19]
我的问题如下:我有一个名为 'All_slips.' 的列表列表 我想遍历列表中的每个列表并对它的所有元素求和,然后将这些总和附加到名为 'Summed_list.' 的新列表因此,我想要的 output/solution 将是 'Summed_list' = [10,16,19]。下面提供了一个最小的可复制程序:
All_slips = [[1,2,3,4],[1,3,5,7],[1,2,7,9]]
Summed_list = []
for j in All_slips[j][] :
counter = 0
for i in All_slips[j][i] :
counter += i
Summed_list.insert(len(Summed_list),counter)
print (Summed_list)
我是 python 的新手,我在第 4 行遇到语法错误:'for j in All_slips[j][]:'。什么是正确的语法来实现我上面所说的 - 我找不到另一个 post 来描述这个问题。预先感谢您的帮助。
summed_list = []
for sublist in All_slips:
summed_list.append(sum(sublist))
就是这样。您还可以使用列表理解。
summed_list = [sum(sublist) for sublist in All_slips]
查看 docs 以了解 for
循环。
python 中的典型 for
循环具有 for item in iterable
类型的语法,您可以使用变量 item
访问 iterable
的成员在循环内。
在你的情况下,如果你想保持两个循环-
for inner_list in All_slips:
inner_sum = 0
for element in inner_list:
inner_sum = inner_sum + element
summmed_list.append(inner_sum)
当然,您不必真正维护这两个循环,因为 sum
是 python -
for inner_list in All_slips:
inner_sum = sum(inner_list)
summed_list.append(inner_sum)
您可以使用 list comprehension -
更进一步summed_list = [sum(inner_list) for inner_list in All_slips]
如果您想使用函数式编程方式,这里有一个解决方案
>>> All_slips = [[1,2,3,4],[1,3,5,7],[1,2,7,9]]
>>> summed_list= list(map(sum , All_slips))
>>> summed_list
[10, 16, 19]
否则,下面将是一种易于理解的解决方案
summed_list = [sum(sub_list) for sub_list in All_slips]
如果您想使用 for 循环,则将子列表的总和存储在一个变量中以进行一次迭代,然后将其保存在 summed_list
suumed_list = []
for sub_list in All_slips:
sublist_sum = 0
for val in sub_list:
sublist_sum+= val
summed_list.append(sublist_sum)
您可以使用built-in地图功能。它将函数映射到可迭代列表。
map(function, list-of-iterables)
因为 Python 3 这会给你一个 map-generator,因此你可能想把它变成一个列表、集合或任何你喜欢的可迭代对象。
list(map(sum, list-of-iterables))
所以在你的情况下:
>>> All_slips = [[1,2,3,4],[1,3,5,7],[1,2,7,9]]
>>> summed_list = list(map(sum, All_slips))
>>> print(summed_list)
[10, 16, 19]