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?
不是直接...但是很容易将切片和连接一起使用来做到这一点:
>>> 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 个项目。如果你想要不同的东西,这是可行的,但你需要准确定义你想要的东西。
您可以将中间的项目替换为空列表
>>> 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]