python中的反转切片

python中的反转切片,python,list,slice,Python,List,Slice,在python中有没有简单的方法来反转列表片段?除了一片,什么都给我?例如: 给定列表a=[0,1,2,3,4,5,6,7,8,9]我希望能够提取[7,8,9,0,1,2],即除a[3:7]之外的所有内容 从逻辑上考虑,我认为[-3:3]会给我想要的,但它只返回一个空列表 我更喜欢一个既适用于python 2又适用于python 3的解决方案切片不是这样包装的,但是a[-3:]+a[:3]会给你这个列表。如果你想销毁列表(或它的副本),你可以删掉你不想要的部分: >>> a =

在python中有没有简单的方法来反转列表片段?除了一片,什么都给我?例如:

给定列表
a=[0,1,2,3,4,5,6,7,8,9]
我希望能够提取
[7,8,9,0,1,2]
,即除a[3:7]之外的所有内容

从逻辑上考虑,我认为[-3:3]会给我想要的,但它只返回一个空列表


我更喜欢一个既适用于python 2又适用于python 3的解决方案切片不是这样包装的,但是
a[-3:]+a[:3]
会给你这个列表。

如果你想销毁列表(或它的副本),你可以删掉你不想要的部分:

>>> a = [0,1,2,3,4,5,6,7,8,9]
>>> a[3:7] = []
>>> a
[0, 1, 2, 7, 8, 9]
订单与您要求的不一样,尽管这对您可能并不重要。

订单重要吗

>>> [j for i,j in enumerate(a) if not 3<=i<7]
[0, 1, 2, 7, 8, 9]

>>[j表示枚举(a)中的i,j,如果不是3好的,那么这可能不是您想要的,但在某些情况下,您可能需要这样的切片,这很有用

有两个重要的免责声明

  • 它不能维持秩序
  • 它删除重复的项目
列表(集合(a).差异(a[3:7]))
1)b=a[7:10]+a[:3]
[7, 8, 9, 0, 1, 2]
2) c=列表(集合(a).差异([3,4,5,6]))
[0, 1, 2, 7, 8, 9]
3) lis=[i代表if i6中的i]
[0, 1, 2, 7, 8, 9]
4) b=[3,4,5,6]
c=[i代表a中的i,如果我不在b中]

Itertools是您的朋友:

itertools.islice(itertools.cycle(a),7,13)
或者一般地

itertools.islice(itertools.cycle(a),gapEnd,len(a)-gapLen)
这是一个生成器,因此您可以使用
list(…)
获取列表,或者只在循环中使用它。作为生成器,它不会创建列表的额外副本,也不会销毁原始列表等

>>> list(itertools.islice(itertools.cycle(a),7,13))
[7, 8, 9, 0, 1, 2]

我希望他们会同情的可能复制品。这有时会很有帮助。
>>> list(itertools.islice(itertools.cycle(a),7,13))
[7, 8, 9, 0, 1, 2]