This question already has answers here:
List of lists changes reflected across sublists unexpectedly
(13个回答)
12个月前关闭。
我需要深入了解以下代码。第一次打印输出给我:'a',而将
带有:
使用
另外,您的问题已作为以下项目的重复项目而关闭:
List of lists changes reflected across sublists unexpectedly
其中有更好的解释。
(13个回答)
12个月前关闭。
我需要深入了解以下代码。第一次打印输出给我:'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']]
这样的输出,但是却得到了[['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)
最佳答案
因为*
运算符不精确,所以有点有趣,因此请使用range
。
替换下面的行即可使用:
y = [x] * 4
带有:
y = [x.copy() for i in range(4)]
使用
copy
可以创建其他内容的副本,而copy
实际上在print
创建相同内容时会创建相同的内容,但实际上是不同的id
,不同的对象,因此您的代码不会再进行上述复制。另外,您的问题已作为以下项目的重复项目而关闭:
List of lists changes reflected across sublists unexpectedly
其中有更好的解释。
关于python - 在python中解释嵌套列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53954049/
10-17 02:30