gpt4 book ai didi

python - 使用嵌套循环创建二维数组

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:55 24 4
gpt4 key购买 nike

下面的代码

n = 3
matrix = [[0] * n] * n
for i in range(n):
for j in range(n):
matrix[i][j] = i * n + j
print(matrix)

打印

[[6, 7, 8], [6, 7, 8], [6, 7, 8]]

但我期望的是

[[0, 1, 2], [3, 4, 5], [6, 7, 8]]

为什么?

最佳答案

请注意:

>>> matrix = [[0] * 3] * 3
>>> [x for x in matrix]
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> [id(x) for x in matrix]
[32484168, 32484168, 32484168]
>>>

三行但只有一个对象。

参见 the docs特别是关于 s * n 操作的注释 2。

修复:

>>> m2= [[0] * 3 for i in xrange(5)]
>>> [id(x) for x in m2]
[32498152, 32484808, 32498192, 32499952, 32499872]
>>>

更新:以下是一些简单(即没有iter())得到答案的代码示例:

>>> nrows = 2; ncols = 4
>>> zeroes = [[0 for j in xrange(ncols)] for i in xrange(nrows)]
>>> zeroes
[[0, 0, 0, 0], [0, 0, 0, 0]]
>>> ap = [[ncols * i + j for j in xrange(ncols)] for i in xrange(nrows)]
>>> ap
[[0, 1, 2, 3], [4, 5, 6, 7]]
>>>

关于python - 使用嵌套循环创建二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7536465/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com