我需要在Python的切片表示法上有一个很好的解释(引用是一个加号).
对我来说,这种符号需要一点点提升.
它看起来非常强大,但我还没有完全了解它.
为什么这不起作用?
# to reverse a part of the string in place
a = [1,2,3,4,5]
a[2:4] = reversed(a[2:4]) # This works!
a[2:4] = [0,0] # This works too.
a[2:4].reverse() # But this doesn't work
Run Code Online (Sandbox Code Playgroud) 我以为我理解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]
Run Code Online (Sandbox Code Playgroud)
为什么foo之后没有更新foo[:][1] = 'two'?
更新:也许我没有清楚地解释我的问题.我知道切片时会创建一个新列表.我怀疑切片分配更新列表的原因(例如foo[:1] = ['one']),但如果有两个切片级别,则不会更新原始列表(例如foo[:][2:] = ['three', 'four']).