我的意思不是反转,而是切片最后几个元素,但是如果切片的长度比列表的长度更远,它将从头开始。
例如:
a = [1, 2, 3, 4, 5, 6]
然后,如果切片从索引4开始且长度为5个元素,则输出为:
[5, 6, 1, 2, 3]
感谢您的帮助:)
答案 0 :(得分:4)
好吧,如果您愿意,可以使用itertools.cycle
和itertools.islice
这样,如果切片超过列表的末尾,它将环绕到开始。
from itertools import cycle, islice
a = [1, 2, 3, 4, 5, 6]
start, length = 4, 5
print(list(islice(cycle(a), start, start+length)))
结果:
[5, 6, 1, 2, 3]
答案 1 :(得分:0)
这对您有用吗? n
是切片列表的索引
n=4
print(a[n:] + a[:n-1])
结果如下:[5, 6, 1, 2, 3]
答案 2 :(得分:0)
您可以编写一些辅助函数来为您执行此操作:
def my_slice(lst, start, length):
end = start + length
if end <= len(lst):
return lst[start:end]
else:
end -= len(lst)
return lst[start:] + lst[:end]