如何从返回 3 个连续元素的列表中返回子列表,其中最后一个元素链接回第一个给定列表中的任何索引?例如,给定指标3的list = [1,2,3,4,5],将返回[4,5,1]。或者给定4带有 list = 的索引[1,2,3,4,5],将返回[5,1,2].我有的选项:1. return list[index:] + list[:index+3]2. return list[index:index+3] + list[:len(list)-index]3. return list[index+3:] + list[:len(list)-index]4. return list[index:index+3] + list[:max(0 , -1*(len(list)-index-3))]
3 回答
慕田峪7331174
TA贡献1828条经验 获得超13个赞
模运算符的%典型用例:
lst = [1,2,3,4,5] # do not shadow built-in 'list'
i = 3
[lst[x % len(lst)] for x in range(i, i+3)]
# [4, 5, 1]
i = 4
[lst[x % len(lst)] for x in range(i, i+3)]
# [5, 1, 2]
从您给定的选项中,最后一个 (4.) 是产生相同结果的选项:
lst[i:i+3] + lst[:max(0 , -1*(len(lst)-i-3))]
您只需尝试一下即可轻松确认;)
慕盖茨4494581
TA贡献1850条经验 获得超11个赞
这可以使用np.roll轻松实现:
lst = [1,2,3,4,5]
def roll_n(x, index, length=3):
return np.roll(x,-index)[:length].tolist()
roll_n(lst,3)
[4, 5, 1]
roll_n(lst,4)
[5, 1, 2]
添加回答
举报
0/150
提交
取消