Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 与简单的反向函数作斗争_Python_List - Fatal编程技术网

Python 与简单的反向函数作斗争

Python 与简单的反向函数作斗争,python,list,Python,List,我想反转列表的中间部分: ls = [1,2,3,4,5,6,7,8,9,10] [1,2,3,7,6,5,4,8,9,10] 如您所见,三个元素[1,2,3]在开始时没有反转,在结束时也没有反转[8,9,10] 但我就是想不出如何优雅地去做。我尝试了很多组合,例如: ls2 = ls[:4] + ls[::-1] + ls[:-4] 但我得到了重复的。任何帮助都将不胜感激 ls= ls[:3]+ls[3:7][::-1]+ls[7:] ls[:-1]将反转整个列表,您需要设置起点和终点

我想反转列表的中间部分:

ls = [1,2,3,4,5,6,7,8,9,10]

[1,2,3,7,6,5,4,8,9,10]
如您所见,三个元素[1,2,3]在开始时没有反转,在结束时也没有反转[8,9,10]

但我就是想不出如何优雅地去做。我尝试了很多组合,例如:

ls2 = ls[:4] + ls[::-1] + ls[:-4]
但我得到了重复的。任何帮助都将不胜感激

ls= ls[:3]+ls[3:7][::-1]+ls[7:]
ls[:-1]将反转整个列表,您需要设置起点和终点。
您只需将所需切片反向分配给目标切片:

ls[3:7] = ls[6:2:-1]

对于任意长度l的列表,假设我们想保持 intl/3,中间反转

l = len(s); n = int(l/3)
ls[:n] + ls[-n-1:n-1:-1] + ls[-n:]

ls[3:7][::-1]似乎有些过分了。为什么不是ls[6:2:-1]?顺便说一下,这不是对现有对象的就地修改,而是对名称的重新分配。ls[3:-3]=ls[-4:2:-1]的读取时间较短,只创建一个临时列表而不是3个,并就地修改现有对象。
ls[3:7] = ls[6:2:-1]
l = len(s); n = int(l/3)
ls[:n] + ls[-n-1:n-1:-1] + ls[-n:]