dln*_*385 7 python list variable-assignment slice
这是一个关于Python如何处理数据和变量的简单问题.我已经做了很多实验,并且Python大部分已经弄清楚了,除了这让我一直绊倒:
[编辑:为了清晰起见,我将这些例子分开并重新排列]
例1:
>>> a = [[1], 2]
>>> a[0:1]
[[1]]
>>> a[0:1] = [[5]]
>>> a
[[5], 2] # The assignment worked.
Run Code Online (Sandbox Code Playgroud)
例2:
>>> a = [[1], 2]
>>> a[0:1][0]
[1]
>>> a[0:1][0] = [5]
>>> a
[[1], 2] # No change?
Run Code Online (Sandbox Code Playgroud)
例3:
>>> a = [[1], 2]
>>> a[0:1][0][0]
1
>>> a[0:1][0][0] = 5
>>> a
[[5], 2] # Why now?
Run Code Online (Sandbox Code Playgroud)
谁能向我解释这里发生了什么?
到目前为止,答案似乎声称a[0:1]
返回一个新列表,其中包含对第一个元素的引用a
.但我不明白这是如何解释实例1的.
a [0:1]返回一个新数组,其中包含对数组[1]的引用,因此最终通过引用调用修改内部数组.
第一种情况不修改[1]数组的原因是您为复制的外部数组分配了一个新的内部数组值.
底线 - [0:1]返回数据的副本,但不复制内部数据.