2

Is there a way to use the slice notation to take only the start and end of a list?

eg 10 items from the start and 10 items from the end?

4

2 回答 2

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 个项目。如果你想要不同的东西,这是可行的,但你需要准确定义你想要的东西。

于 2013-08-20T00:30:46.293 回答
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]
于 2013-08-20T00:45:32.893 回答