我尝试在python3中创建一个随机的空白矩阵,而不使用numpy。 代码看起来很完美,但是当我改变一个单元格的值(例如Square1[0])时,它会改变所有的平方1[x]值。在
#!/usr/bin/env python3
# Creating a random n*n blank matrix
#for example 6*6
#I'll just create coloumns
def one():
square = []
for x in range(6):
square.append(None)
Square = []
for x in range(6):
Square.append(square)
return Square
#output is exactly what i want
print(one())
#but when i try to change a single value(cell),
a = one()
a[2][2] = "Error"
#it's bullshit
print(a)
我或我的代码有什么问题?在
Square是一个包含六个引用的列表,它们都指向同一个
square
列表。修改任何这些square
引用将影响所有行。您可以通过查看行的id值来确认这一点:结果:
^{pr2}$不要生成一个
square
并将其追加六次,而是生成六个square
并将每一个追加一次。在现在这些行都将引用不同的列表。在
我还建议更改
square
的名称,因为有两个变量名只在大小写上有所不同,这很令人困惑。在您的代码失败,因为您向同一数组追加了6个引用。请参阅凯文的回答以获得更详细的解释。在
创建数组的更“python”方法:
这使用list comprehension。在
相关问题 更多 >
编程相关推荐