在我解释我的问题时请耐心等待。如果您已经了解扩展切片列表索引,请跳至粗体标题。
在 python 中,您可以使用切片表示法对列表进行索引。这是一个例子:
>>> A = list(range(10))
>>> A[0:5]
[0, 1, 2, 3, 4]
您还可以包含一个步幅,其作用类似于“步”:
>>> A[0:5:2]
[0, 2, 4]
步幅也允许为负数,这意味着以相反的顺序检索元素:
>>> A[5:0:-1]
[5, 4, 3, 2, 1]
可是等等!我想看看[4, 3, 2, 1, 0]
。哦,我明白了,我需要减少开始和结束索引:
>>> A[4:-1:-1]
[]
发生了什么?它将 -1 解释为位于数组的末尾,而不是开头。我知道您可以按如下方式实现:
>>> A[4::-1]
[4, 3, 2, 1, 0]
但是你不能在所有情况下都使用它。例如,在已传递索引的方法中。
我的问题是:
是否有任何好的 Pythonic 方式来使用具有负步幅的扩展切片以及包含序列第一个元素的显式开始和结束索引?
这是我迄今为止提出的,但似乎并不令人满意。
>>> A[0:5][::-1]
[4, 3, 2, 1, 0]