我想我理解的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