关于python:python创建二维数组的正确方式

问题:

如下形式创立二维数组:

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)

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理