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

How do I reverse a list using while loop?

输入列表:[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

我会说让 while 循环像 for 循环一样工作。

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

counter = len(firstList)-1

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

琐碎的答案

给出

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

然后

a[::-1]

returns

[5, 4, 3, 2, 1]

在您的代码中:

  • 您使用 r_list[(-a)+1],但您从未分配 r_list 任何值(只是 "r_list = []")
  • 我认为您混淆了 "items" 和 "r_list"。所以我认为你想要 return "r_list" 而不是 "items" (输入参数)
  • 赋值应该是 "r_list[a] = items[-a-1]",但这不起作用。你应该使用 "r_list.append(items[-a-1])"
  • return应该是"return r_list"
  • "while (a!=b)" 应该是 "while (a < b)" 为了便于阅读

希望对您有所帮助

最简单的方法是:

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[:]).