仅使用len()函数反转列表的顺序

时间:2013-12-17 18:52:18

标签: python list python-3.x

def reverse_list(list1):
    length = len(list1)
    for i in range(length):
        list1[i] = list1[(length - 1) - i]
    return list1

我这里有一个功能,理论上应该颠倒任何给出1D列表的顺序。它改变了我认为的列表,因此修改了原始列表。好的,可以。我正在使用的列表是 list1 = [1, 2, 3, 4, 5]

理论:

list[0] = list[4-0] = list[4] # 5
list[1] = list[4-1] = list[3] # 4
list[2] = list[4-2] = list[2] # 3
list[3] = list[4-3] = list[1] # 2
list[4] = list[4-4] = list[0] # 1

应该给我[5, 4, 3, 2, 1],而是回复[5, 4, 3, 4, 5]。我无法弄清楚为什么会这样。我只使用len()函数,没有其他内置函数用于列表。

2 个答案:

答案 0 :(得分:3)

根本不使用任何功能:

rev_list = original[::-1]

或者,如果出于某种原因使用len是必需的:

rev_list = original[::-len('1')]

答案 1 :(得分:0)

它不起作用的原因是因为你正在阅读刚才改变的清单!所以你将list [0]设置为5然后将list [4]设置为list [0],你刚刚改为5:)

                              # contained    set to
list[0] = list[4-0] = list[4] # 1            list[4] which is 5
list[1] = list[4-1] = list[3] # 2            list[3] which is 4
list[2] = list[4-2] = list[2] # 3            list[2] which is 3
list[3] = list[4-3] = list[1] # 4            list[1] which is now 4
list[4] = list[4-4] = list[0] # 5            list[4] which is now 5

我真的很喜欢Eric的方式:D