Python Can';不要反转子列表

Python Can';不要反转子列表,python,list,python-3.x,reverse,Python,List,Python 3.x,Reverse,你能为我解释一下为什么L[0:2]。reverse()不会更改L列表吗?L[0:2]创建列表的新副本,然后L[0:2]。reverse()会反转该副本。对切片使用赋值和只读取切片之间有很大区别(调用方法,即使是对对象进行变异的方法,也不会将其转化为赋值) 您可以使用切片分配来分配反向副本: >>> L = [1, 2, 3, 4] >>> L[0:2] = [8, 9] >>> L [8, 9, 3, 4] >>> L[0:

你能为我解释一下为什么
L[0:2]。reverse()
不会更改
L
列表吗?

L[0:2]
创建列表的新副本,然后
L[0:2]。reverse()
会反转该副本。对切片使用赋值和只读取切片之间有很大区别(调用方法,即使是对对象进行变异的方法,也不会将其转化为赋值)

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

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

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

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

另请参阅,以了解有关如何工作的详细信息。

我不这样认为,伙计,当我键入:L[0:2]=[8,9]时。它确实改变了名单ạ特恩盖伊ễ恩:是的,因为那是一项任务<代码>L[0:2]。reverse()不分配任何内容。
L[:2] = reversed(L[: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]