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]*3foriinrange(3):
A[i]=[None]*2
这样就生成了一个包含 3 个长度为二的不同列表的列表。 你也可以使用列表推导式:
w,h=2,3A=[[None]*wforiinrange(h)]
或者你还可以使用提供矩阵类型的扩展包;其中最著名的是 NumPy。
以上是 python如何创建多维列表? 的全部内容, 来源链接: utcz.com/z/520580.html