python - 重新排列列表中元素的顺序
问题描述
我正在尝试重新排列列表中元素的顺序。
我想将 i + 1 位置的元素移动到列表的末尾,
对于 len(list) - 2 次。
例如,如果我有
>>> 5 6 7 8 9 10 11 12 13 14 15
5 7 8 9 10 11 12 13 14 15 6
5 7 9 10 11 12 13 14 15 6 8
5 7 9 11 12 13 14 15 6 8 10
5 7 9 11 13 14 15 6 8 10 12
5 7 9 11 13 15 6 8 10 12 14
5 7 9 11 13 15 8 10 12 14 6
5 7 9 11 13 15 8 12 14 6 10
5 7 9 11 13 15 8 12 6 10 14
5 7 9 11 13 15 8 12 6 14 10 # desired output
下面是我的代码,但我只是想不出一种从列表中删除 i + 1th 元素并将其附加到列表末尾的方法。
该代码返回一个错误,指出弹出索引超出范围并且非常令人沮丧。
def rearrange(sequence):
test_list = list(sequence)
length = len(test_list)
for i in range(length - 2):
stray_element = test_list.pop(i + 1)
test_list.append(stray_element)
解决方案
您发布的代码(在对其进行编辑以使其返回并提供输入序列之后)对我来说可以正常工作并产生所需的输出。
my_sequence = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
def rearrange(sequence):
test_list = list(sequence)
length = len(test_list)
for i in range(length - 2):
stray_element = test_list.pop(i + 1)
test_list.append(stray_element)
return test_list
print(rearrange(my_sequence))
输出:
[5, 7, 9, 11, 13, 15, 8, 12, 6, 14, 10]
(发布为答案而不是评论,主要是因为格式......)
推荐阅读
- python - 优化 groupby agg 函数以返回多个结果列
- r - GGplot2:scale_y_sqrt() 以错误的方式改变比例
- haskell - Hackage 是否会为候选包生成黑线鳕?
- hive - Sqoop 导出错误:目标数据库尚不支持混合更新/插入
- validation - 如何验证nestjs中的授权标头?
- python - 使用可选子查询将 sql 转换为具有别名的 sqlalchemy
- unity3d - mixamo 动画的问题。mixamo 角色以一些不同的旋转结束。如何修复旋转并适合我自己的角色?
- r - 如何尽快根据组连接行
- angular - 在模拟器和设备上并行测试 NativeScript 应用程序
- arrays - 迭代 2 个数组以更新 rails 数据库表