如何使用while循环反转列表?

时间:2015-02-14 01:10:15

标签: python loops while-loop reverse

输入列表:[1, 2, 3, 4, 5]

输出:[5, 4, 3, 2, 1]

我知道如何使用for循环,但我的任务是使用while循环执行;我不知道该怎么做。这是我到目前为止的代码:

def while_version(items):
   a = 0

 b = len(items)

 r_list = []

  while (a!=b):

        items[a:a] = r_list[(-a)-1]

        a+=1
   return items

3 个答案:

答案 0 :(得分:1)

我想说使while循环像for循环一样。

firstList = [1,2,3]
secondList=[]

counter = len(firstList)-1

while counter >= 0:
    secondList.append(firstList[counter])
    counter -= 1

答案 1 :(得分:1)

最简单的方法是:

def while_version(items):
    new_list = []
    while items:  # i.e. until it's an empty list
        new_list.append(items.pop(-1))
    return new_list

这将颠倒列表:

>>> l1 = [1, 2, 3]
>>> l2 = while_version(l)
>>> l2
[3, 2, 1]

但请注意,它也会清空原始列表:

>>> l1
[]

为避免这种情况,请致电,例如l2 = while_version(l1[:])

答案 2 :(得分:0)

琐碎的回答

鉴于

a = [1, 2, 3, 4, 5]

然后

a[::-1]

返回

[5, 4, 3, 2, 1]

在您的代码中:

  • 你使用r_list [( - a)+1],买你从来没有给r_list任何值(只是" r_list = []")
  • 我觉得你很困惑" item"用" r_list"。所以我想你想回归" r_list"而不是"项目" (输入参数)
  • 作业应该是" r_list [a] = items [-a-1]",但这不起作用。你应该使用" r_list.append(items [-a-1])"
  • 返回应为"返回r_list"
  • "而(a!= b)"应该是"而(a< b)"可重复性

希望这有帮助