python如何创建多维列表?

python

你可能试图制作一个像这样的多维数组:

>>>

>>> A=[[None]*2]*3

如果你打印它,看起来是正确的:

>>> A

[[None, None], [None, None], [None, None]]

但是,当你给某一项赋值时,会同时在多个位置显示变化:

>>> A[0][0]=5

>>> A

[[5, None], [5, None], [5, None]]

其中的原因在于使用 * 对列表执行重复操作并不是创建副本,它只是创建现有对象的引用。 *3 创建了对长度为二的同一列表的 3 个引用。 对某一行的改变会作用于所有行,通常这一定不是你所希望的。

建议的做法是先创建一个所需长度的列表,然后其中的元素再以一个新创建的列表来填充:

A=[None]*3

foriinrange(3):

A[i]=[None]*2

这样就生成了一个包含 3 个长度为二的不同列表的列表。 你也可以使用列表推导式:

w,h=2,3

A=[[None]*wforiinrange(h)]

或者你还可以使用提供矩阵类型的扩展包;其中最著名的是 NumPy。

以上是 python如何创建多维列表? 的全部内容, 来源链接: utcz.com/z/520580.html

回到顶部