Python切片表示法只采用列表的开头和结尾部分?

时间:2013-08-20 00:29:19

标签: python slice notation

有没有办法使用切片表示法只采用列表的开头和结尾?

例如从开始的10个项目和从结尾的10个项目?

2 个答案:

答案 0 :(得分:4)

不直接......但是一起使用切片和连接非常容易:

>>> a = list(range(100))
>>> a[:10] + a[-10:]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

当然,如果列表中的项目少于20个,您将获得一些重叠值:

>>> a = list(range(15))
>>> a[:10] + a[-10:]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

...但你的字面意思是你要求的:从一开始的10个项目,从最后的10个项目。如果你想要不同的东西,它是可行的,但你需要准确定义你想要的东西。

答案 1 :(得分:3)

您可以使用空列表替换中间的项目

>>> a = list(range(100))
>>> a[10:-10] = []
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

这样做不会产生重叠,只有整个列表没有足够的项目

>>> a = list(range(15))
>>> a[10:-10] = []
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

甚至为@ abarnert的案例以理智的方式工作

>>> a = list(range(3))
>>> a[10:-10] = []
>>> a
[0, 1, 2]