【发布时间】:2010-09-28 18:47:30
【问题描述】:
请耐心等待我解释我的问题。如果您已经了解扩展切片列表索引,请跳至粗体标题。
在 python 中,您可以使用切片表示法对列表进行索引。这是一个例子:
>>> A = list(range(10))
>>> A[0:5]
[0, 1, 2, 3, 4]
您还可以包含一个步幅,其作用类似于“步”:
>>> A[0:5:2]
[0, 2, 4]
stride 也允许为负数,表示以相反的顺序检索元素:
>>> 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]
【问题讨论】: