我以为我懂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没有更新?
更新: 可能我没有清楚地解释我的问题。我知道切片时会创建一个新列表。我的疑问是为什么切片赋值会更新列表(例如foo[:1] = ['one']
),但如果有两层切片,它不会更新原始列表(例如foo[:][2:] = ['three', 'four']
)。
numpy
吗?Numpy 数组在切片上与 Python 列表有所不同。 - Martijn Pieters