此代码:
import pprint
pp = pprint.PrettyPrinter()
matrix = [[None]*6]*6
ROWS = len(matrix)
COLS = len(matrix[0])
for row in range(ROWS):
for col in range(COLS):
matrix[row][col] = row+col
pp.pprint(matrix)
打印出来:
[[5, 6, 7, 8, 9, 10],
[5, 6, 7, 8, 9, 10],
[5, 6, 7, 8, 9, 10],
[5, 6, 7, 8, 9, 10],
[5, 6, 7, 8, 9, 10],
[5, 6, 7, 8, 9, 10]]
此代码产生所需的结果:
import numpy
import pprint
ROWS = 6
COLS = 6
matrix = numpy.zeros((ROWS,COLS))
for row in range(ROWS):
for col in range(COLS):
matrix[row][col] = row+col
pp.pprint(matrix)
并输出:
[[ 0., 1., 2., 3., 4., 5.],
[ 1., 2., 3., 4., 5., 6.],
[ 2., 3., 4., 5., 6., 7.],
[ 3., 4., 5., 6., 7., 8.],
[ 4., 5., 6., 7., 8., 9.],
[ 5., 6., 7., 8., 9., 10.]]
我以为我知道多级列表是如何工作的但我猜不是。什么可能导致我的代码将相同的值分配给列表中的每一行?