问题:
如下方式创建二维数组:
ns = [[0] * 3] * 3
print("ns =", ns)
ns[0][0] = 233
print("ns =", ns)
输出:
ns = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
ns = [[233, 0, 0], [233, 0, 0], [233, 0, 0]]
原因:
浅拷贝,ns 里面的三个列表指向同一块内存。
解决办法:
1、直接创建法
ns = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
最简单常用方法。
2、列表生成式法
ns = [[0 for i in range(3)] for j in range(3)]
后者控制行数,前者控制列数。
3、使用模块numpy创建
import numpy as np
ns = np.zeros((3, 3), dtype=np.int)