Python 二维数组赋值

Lorqor
  • 10
grid = [[0,]*5]*3

for i in range(3):
    for j in range(5):
        if (i+j+2)%2 ==1:
            grid[i][j] = 1

print grid

结果成了下面这个样子,请教为何....

[[1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1]]
回复
阅读 12k
2 个回答
✓ 已被采纳

代码来说话

arr       = [0,1,2,3]
arr       = [arr]*2
arr[0][0] = 100
arr[1][3] = 200
print arr

clipboard.png
你可以理解每行都是对原arr = [0,1,2,3]的引用。
任意改变任意列上的值,那一列都会改变,因为他们都是同一个引用

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏