我想我理解的Python切片操作,但是当我尝试更新切片名单,我糊涂了:更新切片列表
>>> foo = [1, 2, 3, 4]
>>> foo[:1] = ['one'] # OK, foo updated
>>> foo
['one', 2, 3, 4]
>>> foo[:][1] = 'two' # why foo not updated?
>>> foo
['one', 2, 3, 4]
>>> foo[:][2:] = ['three', 'four'] # Again, foo not updated
>>> foo
['one', 2, 3, 4]
为什么不富foo[:][1] = 'two'
后更新?
更新:也许我没有清楚地解释我的问题。我知道切片时,会创建一个新列表。我怀疑为什么切片任务更新列表(例如foo[:1] = ['one']
),但是如果有两个切片层次,它不更新原始列表(例如foo[:][2:] = ['three', 'four']
)。
你以前是否使用过'numpy',或许? Numpy数组使用与Python列表不同的切片。 –
请阅读https://en.wikipedia.org/wiki/Value_(computer_science)#lrvalue –
恭喜!你已经发现了[如何克隆或复制列表](http://stackoverflow.com/a/2612815/3904031)!然后询问[复制程序有多深?](http://stackoverflow.com/a/26562235/3904031) – uhoh