解释python中的嵌套列表
我需要深入了解以下代码。第一次打印给我输出:“a”而将解释python中的嵌套列表,python,python-3.x,Python,Python 3.x,我需要深入了解以下代码。第一次打印给我输出:“a”而将y[0][0]的值更改为“p”时,它也会更改y[0][0]、y[1][0]、y[2][0]和y[3][0]的值。我本来希望输出像[['p','b','c'],['a','b','c'],['a','b','c'],['a','b','c'].[/code>但结果却是['p','b','c'],['p','b','c'],['p','b','c'],['p','b','c']. x=["a","b","c"] y = [x] * 4 # fir
y[0][0]
的值更改为“p”时,它也会更改y[0][0]
、y[1][0]
、y[2][0]
和y[3][0]
的值。我本来希望输出像[['p','b','c'],['a','b','c'],['a','b','c'],['a','b','c'].[/code>但结果却是['p','b','c'],['p','b','c'],['p','b','c'],['p','b','c'].
x=["a","b","c"]
y = [x] * 4
# first print
print(y[0][0])
y[0][0] = "p"
# second print
print(y)
因为*
运算符不精确,这有点滑稽,所以使用范围
它将通过替换以下行来工作:
y = [x] * 4
与:
使用copy
创建其他内容的副本,实际上copy
在打印它时创建的是相同的内容,但是不同的id
,不同的对象,因此您的代码不会再进行上述复制
此外,您的问题已作为以下内容的副本关闭:
它们有更好的解释。y=[x代表范围(4)中的i]
创建对同一列表的引用。如果执行id(y[0])
和id(y[1])
,则返回相同的数字。“如果有帮助的话,我没有投反对票。”沙卡尔佩斯编辑mine@prashantrana我的编辑完成了,还是很难理解。而且有更好的答案,为什么要麻烦呢?不要回答明显重复的问题。它会分割信息并稀释网站内容的质量。请尝试执行y=[列表(“abc”)、列表(“abc”)、列表(“abc”)、列表(“abc”)]
。我不知道是否有更好的pythonic方法来编写此文件。y=[x.copy(),用于范围(4)]
使用此文件。然后你就可以改变个人价值观了
y = [x.copy() for i in range(4)]