为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕姐4208626 2021-08-11 23:45:43
如何从返回 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))]

您只需尝试一下即可轻松确认;)


查看完整回答
反对 回复 2021-08-11
?
慕盖茨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]


查看完整回答
反对 回复 2021-08-11
  • 3 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信