您可以使用列表推导:
matrix = [[1, 2, 3], [4, 5, 6]]
sums = sum(y for x in matrix for y in x)
print sums
运行如下:
>>> matrix = [[1, 2, 3], [4, 5, 6]]
>>> sums = sum(y for x in matrix for y in x)
>>> print sums
21
>>>
或者您可以使用基本的for 循环:
matrix = [[1, 2, 3], [4, 5, 6]]
sums = 0
for sub in matrix:
for value in sub:
sums+=value
print sums
运行如下:
>>> matrix = [[1, 2, 3], [4, 5, 6]]
>>> sums = 0
>>> for sub in matrix:
... for value in sub:
... sums+=value
...
>>> print sums
21
>>>
列表推导与双 for 循环相同,仅在一行中:
下面的解释:
sums = sum(y for x in matrix for y in x)
让我们从头开始:
我们使用内置函数sum() 来计算列表中的所有值:
>>> sum([1, 2, 3, 4]) #Should be 10
10
>>>
但是,sum() 仅适用于 扁平化 列表:
>>> sum([[1, 2], [3, 4]])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'list'
>>>
因此,我们需要用双 for 循环展平它:
sum(y for x in matrix for y in x)
for x in matrix 基本上取矩阵的每个值,在这种情况下基本上是[1, 2, 3] 和[4, 5, 6]。 for y in x 正在分配 y to every value of x、[1, 2, 3, 4, 5, 6]。这是我们的扁平化列表。然后我们调用sum(),一切都像变魔术一样!