gpt4 book ai didi

python - 在python中迭代多维数组中包含的区域,为什么它不起作用?

转载 作者:行者123 更新时间:2023-11-28 18:45:42 24 4
gpt4 key购买 nike

我需要用实数填充 10*10 矩阵中的一个区域,为此我用 python 编写了这段代码:

# 'x' and 'x1' are points in a surface that delimit the area
[x, x1, y, y1] = [0, 5, 0, 2]
surfaceXY = [[0]*10]*10

for i in range(x, x1):
for j in range(y, y1):
surfaceXY[i][j] = 5

for k in range(10):
for l in range(10):
print surfaceXY[k][l],
print ""

我想输出这个:

5 5 0 0 0 0 0 0 0 0 
5 5 0 0 0 0 0 0 0 0
5 5 0 0 0 0 0 0 0 0
5 5 0 0 0 0 0 0 0 0
5 5 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0

但是代码会输出:

5 5 0 0 0 0 0 0 0 0 
5 5 0 0 0 0 0 0 0 0
5 5 0 0 0 0 0 0 0 0
5 5 0 0 0 0 0 0 0 0
5 5 0 0 0 0 0 0 0 0
5 5 0 0 0 0 0 0 0 0
5 5 0 0 0 0 0 0 0 0
5 5 0 0 0 0 0 0 0 0
5 5 0 0 0 0 0 0 0 0
5 5 0 0 0 0 0 0 0 0

谁能解释一下为什么,以及如何在 python 中解决这个问题的正确方法?

最佳答案

请注意,[[0]*10]*10 不会创建一个包含十个列表的列表,每个列表有十个零。它创建一个列表,其中包含一个列表,其中包含十个零。

由于只有一个列表,因此更改网格中的整列。

使用

[[0]*10 for _ in range(10)]

参见 2d array of zeros以供进一步讨论。

关于python - 在python中迭代多维数组中包含的区域,为什么它不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20535631/

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