如何使用 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[:])
.
输入列表:[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[:])
.