遍历嵌套列表并在 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]