无法反转子列表

Can't reverse a sublist

>>> L = [1, 2, 3, 4]
>>> L[0:2] = [8, 9]
>>> L
[8, 9, 3, 4]
>>> L[0:2].reverse()
>>> L
[8, 9, 3, 4]

你能为我解释一下为什么 L[0:2].reverse() 没有改变 L 列表吗?

L[0:2] 创建列表的新副本,然后 L[0:2].reverse() 反转该副本。对切​​片使用赋值与仅读取切片之间存在很大差异(调用方法,即使是改变对象的方法,也不会将其转换为赋值)。

您可以使用切片分配来分配反向副本:

L[:2] = L[1:None:-1]

L[:2] = reversed(L[:2])

这将以相反的顺序用相同的元素替换前 2 个元素:

>>> L = [42, 81, 13, 7]
>>> L[:2] = L[1:None:-1]
>>> L
[81, 42, 13, 7]
>>> L[:2] = reversed(L[:2])
>>> L
[42, 81, 13, 7]

另请参阅 Explain Python's slice notation 了解其工作原理的详细信息。