为什么嵌套列表的更改不影响第一层而只影响后续层?
Why does a change in nested list doesn't affect the first layers and only the subsequent layers?
我只是想知道我们如何得到下面的输出。下面给出的是Python代码:
x=[1,3,6,[18]]
y=list(x)
x[3][0]=15
x[1]=12
print(y)
输出为:
[1,3,6,[15]]
为什么 x[1]=12
没有在 列表中做任何更改 y?但是为什么x[3][0]=15
改变了list y中的元素?能否对此做一个详细而简单的解释? 为什么???
假设每个元素都是一个变量:
x = [a,b,c,d] # 1,3,6,[18]
你将其复制为 y
所以你有
y = [a,b,c,d] # 1,3,6,[18]
当您执行 x[3][0] = 15
时,您正在更改 d
的第一个元素。请注意 d
仍然是变量 d
,您更改了它的内容,但它在两个列表中仍然是相同的 d
。
现在你改变x
的第二个元素
x = [a,e,c,d] # 1,12,6,[15]
但是y
仍然是
y = [a,b,c,d] # 1,3,6,[15]
编辑:添加一个非代码示例以使其更清晰
假设 x
是一个包含以下内容的列表:
- 一篇论文说
1
- 一篇论文说
3
- 一篇论文说
look at that notebook over there, whatever's in there is my value
当您将 x
复制为 y
时,您有:
- 一篇写着
1
的论文(副本)
- 一篇写着
3
的论文(副本)
- 一篇写着
look at that notebook over there, whatever's in there is my value
的论文(这是一份副本,但都引用了同一个笔记本)
当您 x[2][0] = 1
走到笔记本所在的位置并更改内容时,x
和 y
仍然会告诉您转到同一个笔记本以了解其中的内容在那里,你没有更改第 3 篇论文,你按照它的说明更改了笔记本的内容
当你做 x[1] = 6
时,你正在用一张写着 6
的新论文更改 x
的第二个元素,但你没有更改 [=14] 中的那个=] 因为它是不同的论文(原件的副本)
我只是想知道我们如何得到下面的输出。下面给出的是Python代码:
x=[1,3,6,[18]]
y=list(x)
x[3][0]=15
x[1]=12
print(y)
输出为:
[1,3,6,[15]]
为什么 x[1]=12
没有在 列表中做任何更改 y?但是为什么x[3][0]=15
改变了list y中的元素?能否对此做一个详细而简单的解释? 为什么???
假设每个元素都是一个变量:
x = [a,b,c,d] # 1,3,6,[18]
你将其复制为 y
所以你有
y = [a,b,c,d] # 1,3,6,[18]
当您执行 x[3][0] = 15
时,您正在更改 d
的第一个元素。请注意 d
仍然是变量 d
,您更改了它的内容,但它在两个列表中仍然是相同的 d
。
现在你改变x
x = [a,e,c,d] # 1,12,6,[15]
但是y
仍然是
y = [a,b,c,d] # 1,3,6,[15]
编辑:添加一个非代码示例以使其更清晰
假设 x
是一个包含以下内容的列表:
- 一篇论文说
1
- 一篇论文说
3
- 一篇论文说
look at that notebook over there, whatever's in there is my value
当您将 x
复制为 y
时,您有:
- 一篇写着
1
的论文(副本) - 一篇写着
3
的论文(副本) - 一篇写着
look at that notebook over there, whatever's in there is my value
的论文(这是一份副本,但都引用了同一个笔记本)
当您 x[2][0] = 1
走到笔记本所在的位置并更改内容时,x
和 y
仍然会告诉您转到同一个笔记本以了解其中的内容在那里,你没有更改第 3 篇论文,你按照它的说明更改了笔记本的内容
当你做 x[1] = 6
时,你正在用一张写着 6
的新论文更改 x
的第二个元素,但你没有更改 [=14] 中的那个=] 因为它是不同的论文(原件的副本)