首页 > 解决方案 > 重新排列列表中元素的顺序

问题描述

我正在尝试重新排列列表中元素的顺序。

我想将 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)

标签: pythonpython-3.xpython-2.7

解决方案


您发布的代码(在对其进行编辑以使其返回并提供输入序列之后)对我来说可以正常工作并产生所需的输出。

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]

(发布为答案而不是评论,主要是因为格式......)


推荐阅读