【发布时间】:2020-07-27 22:44:45
【问题描述】:
我的意思不是反转,而是切片最后几个元素,但是如果切片的长度比列表的长度更远,它会从头开始。
例如:
a = [1, 2, 3, 4, 5, 6]
那么如果切片从索引 4 开始并且长度为 5 个元素,则输出为:
[5, 6, 1, 2, 3]
任何帮助表示赞赏:)
【问题讨论】:
-
@Jab 这不是特别编程......
标签: python python-3.x slice
我的意思不是反转,而是切片最后几个元素,但是如果切片的长度比列表的长度更远,它会从头开始。
例如:
a = [1, 2, 3, 4, 5, 6]
那么如果切片从索引 4 开始并且长度为 5 个元素,则输出为:
[5, 6, 1, 2, 3]
任何帮助表示赞赏:)
【问题讨论】:
标签: python python-3.x slice
如果你愿意,你可以使用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]
【讨论】:
这对你有用吗? n 是对列表进行切片的索引
n=4
print(a[n:] + a[:n-1])
结果如下:[5, 6, 1, 2, 3]
【讨论】:
n设置为大于列表的长度,它也可以工作
您可以编写一个小辅助函数来为您执行此操作:
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]
【讨论】: