我有一个列表,想要获得最后几个元素并以相反的顺序排列:
lst = [1,2,3,4]
我可以使用 lst[::-1]
来反转整个列表。但是我只想反转到某个特定的索引位置。我可以指定一个索引:
ind = 1
lst[:ind-1:-1]
并获得:
[4, 3, 2]
这个函数返回原始列表中从指定索引开始到列表末尾的元素,且返回结果是逆序。对于任何大于0的索引值都可使用。但如果索引值ind为0(表示返回整个列表的逆序),则会出现问题:
ind = 0
lst[:ind-1:-1]
返回:
[]
因为我的结束位置与我的起始位置相同(-1)。我期望/希望的输出应该是[4, 3, 2, 1]
我知道一个简单的解决方法就是加一个if语句来捕捉ind为0的情况,或者分两步走(先索引再反转),但感觉这应该可以用Python的索引系统来实现。我错了吗?
ind == 0
时使用None
,例如:lst[:None if ind==0 else ind-1:-1]
。该语句的意思是,如果ind
等于0,则切片从列表结尾一直切到开头;否则,从列表的第ind-1
个元素开始倒序切片。 - AChampionlst[:-5:-1]
,但感觉很难读。 - Josh Leelst[:ind-1-len(lst):-1]
... - AChampion