Python中简单表的奇怪行为
我是Python的初学者。的动态编程解决方案需要一个初始化表,该表基本上可以如下所示:Python中简单表的奇怪行为,python,matrix,Python,Matrix,我是Python的初学者。的动态编程解决方案需要一个初始化表,该表基本上可以如下所示: [ [1,0,0,0], [1,0,0,0], [1,0,0,0] ] 哪一个表我是这样指定的: table=[[1]+[0]*3]*3 现在,如果我写 table[1][2]=1 for x in table: print x 我得到了一份: [1, 0, 2, 0] [1, 0, 2, 0] [1, 0, 2, 0] 我也不知道为什么整列都会被更改,而不是指定的数字。错误在您没有显示的代码中。你大
[
[1,0,0,0],
[1,0,0,0],
[1,0,0,0]
]
哪一个表我是这样指定的:
table=[[1]+[0]*3]*3
现在,如果我写
table[1][2]=1
for x in table: print x
我得到了一份:
[1, 0, 2, 0]
[1, 0, 2, 0]
[1, 0, 2, 0]
我也不知道为什么整列都会被更改,而不是指定的数字。错误在您没有显示的代码中。你大概是这样草签你的名单的
a = [1, 0, 0, 0]
table = [a, a, a]
或
或者类似的东西,这会导致一个列表包含三倍于同一列表对象的内容。如果修改此单个对象,它将在引用它的任何位置更改,因为它只是单个对象
如果需要更多详细信息,请向我们展示创建表的代码
初始化表的正确方法是
table = [[1, 0, 0, 0] for i in range(3)]
或者干脆
table = [[1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0]]
这项工作:
t = [
[1,0,0,0],
[1,0,0,0],
[1,0,0,0],
]
t[1][2]=1
for x in t: print x
@安德拉斯科瓦茨:欢迎来到SO。我的帖子已经回答了你的新问题。
t = [
[1,0,0,0],
[1,0,0,0],
[1,0,0,0],
]
t[1][2]=1
for x in t: print x