首页 > 解决方案 > 使用 pop & insert 反转列表

问题描述

有什么想法为什么要reverse_1反转输入列表但reverse_2不反转?

我在调试器中都运行过,问题似乎是reverse_2没有返回反向列表。

def reverse_1(seq):
    return_list = list()
    for i in range(len(seq)):
        return_list.append(seq.pop())
    seq.extend(return_list)


def reverse_2(seq):
    length = len(seq)
    for i in range(length):
        seq.insert(0, seq.pop())


example = [1, 2, 3, 4, 5, 6]
reverse_1(example) #OUTPUT - [6, 5, 4, 3, 2, 1]
reverse_2(example) #OUTPUT - [1, 2, 3, 4, 5, 6]

标签: pythonlist

解决方案


.insert(0, n)将插入n到列表的前面,因此在第一次迭代中它会弹出6并在开头插入:

[6, 1, 2, 3, 4, 5]

第二次迭代将弹出5并类似地插入它:

[5, 6, 1, 2, 3, 4]

一个可能的解决方案是将行更改为:

seq.insert(i, seq.pop())

推荐阅读