【发布时间】:2016-01-14 08:15:11
【问题描述】:
我以为我了解 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 在foo[:][1] = 'two' 之后没有更新?
更新:也许我没有清楚地解释我的问题。我知道切片时会创建一个新列表。我的疑问是为什么切片分配会更新列表(例如foo[:1] = ['one']),但如果有两个切片级别,它不会更新原始列表(例如foo[:][2:] = ['three', 'four'])。
【问题讨论】:
-
你以前用过
numpy,也许吧? Numpy 数组使用切片不同于 Python 列表。