Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解释python中的嵌套列表_Python_Python 3.x - Fatal编程技术网

解释python中的嵌套列表

解释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

我需要深入了解以下代码。第一次打印给我输出:“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
# 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)]