我无法理解下面的代码行,任何人都可以清楚地解释我吗

问题描述 投票:0回答:2
a=[10, 23, 56, [78]]
b=list(a)
a[3][0]=95
a[1]=34
print(b)

# why is the out this [10, 23, 56, [95]] and not this [10, 34, 56, [95]]
>>[10, 23, 56, [95]]

我猜我知道附加是如何工作的,但我无法理解这一点,或者可能是我对附加的知识太浅了

python list append nested-lists
2个回答
1
投票

列表a包含3个整数和一个列表。

b=list(a)
之后,
b
是一个列表(显然),其中包含整数的副本和
a
对索引 3 处原始子列表的引用。

因此:

a[1] = 34

...对 b

没有影响

鉴于:

a[3][0] = 95

...修改 a[3] 和 b[3] 处的列表。请记住,它们是同一件事。你可以通过以下方式证明这一点:

assert id(a[3]) == id(b[3])

1
投票

你的错误是你在编辑列表a之前定义了列表b(为什么它只显示一半?不知道,python有时会有点奇怪:-])

所以...只要您在修改后仅定义列表 b,它就应该有效。

#User set list
a=[10, 23, 56, [78]]

#Changing the list
a[1]=34
a[3][0]=95

#Puts a inside of a list named "b"
b=list(a)
print(list(b))
© www.soinside.com 2019 - 2024. All rights reserved.