从列表中返回子列表,其中最后一个元素链接回列表中的起始索引

如何从返回 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))]


慕姐4208626
浏览 143回答 3
3回答

慕田峪7331174

模运算符的%典型用例: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

这可以使用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]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python