首页 > 解决方案 > 在 python 中反转列表 - 为什么我无法返回修改后的列表

问题描述

我正在研究一个可以反转列表的函数,类似于 reverse()。我尝试使用切片构建函数,还尝试查找旧帖子并遵循类似的逻辑。我理解反转元素背后的逻辑,但机械地我不明白为什么元素在函数结束时保持不反转。

def reverse_list(listofval):
    newlist = []
    index = 0
    while index < len(listofval):
        newlist.append(listofval[len(listofval) - 1 - index])
        index += 1
    return newlist

所以上面的函数只是获取旧列表(val 的列表)并继续向后读取旧列表,然后以相反的顺序添加每个元素(旧列表中的最后一个元素成为第一个,第一个成为最后一个)。但是“return newlist”似乎返回了一个未修改的列表。

def reverse_list(listofval):
    newlist = listofval[::-1]
    return newlist

同样,我构建了另一个使用切片更直接的函数,当返回新列表时,没有任何改变。我想“返回新列表”一定有问题,但我不完全确定我在那里犯了什么错误。

非常感谢你们!

标签: pythonpython-3.xlistreverse

解决方案


获得返回值的方法是这样的。

def retList():
    list = []
    for i in range(0,10):
        list.append(i)
    return list
a = retList()
print a

您还可以在代码中定义 newlist[] 之前将全局变量用于新列表

global newlist
newlist = []

你也可以使用 append left

from collections import deque
def reverse_list(listofval):
    global newlist
    newlist = []
    for i in listofval:
        newlist = deque(newlist)
        newlist.appendleft(i)
        print(newlist)
listofval = [1, 2, 3, 4, 5]
reverse_list(listofval)
print(newlist)

推荐阅读