Python 3.x Python3反转列表的简单代码有什么问题

Python 3.x Python3反转列表的简单代码有什么问题,python-3.x,Python 3.x,我正试图扭转一个列表,虽然我找到了一个简单的方法,但我仍然不明白为什么下面的方法不起作用。。。救命啊,快把我逼疯了 a=list("effort") k=len(a) l=a for i in range (k): l[i] = a[k-1] print(i) k=k-1 print(l) 当您执行'l=a'时,您正在为原始列表分配一个引用,因此您的操作将在原始列表上执行。请尝试使用“l=[c代表a中的c]”或“l=lista”,这样您就可以对原始

我正试图扭转一个列表,虽然我找到了一个简单的方法,但我仍然不明白为什么下面的方法不起作用。。。救命啊,快把我逼疯了

a=list("effort") 
k=len(a)
l=a
for i in range (k):
    l[i] = a[k-1]
    print(i)
    k=k-1
print(l)

当您执行'l=a'时,您正在为原始列表分配一个引用,因此您的操作将在原始列表上执行。请尝试使用“l=[c代表a中的c]”或“l=lista”,这样您就可以对原始列表的副本进行操作。

问题在于行:

l = a
这里让您感到困惑的是变量a是对列表对象的引用。当你说l=a时,你实际上是在说,让我参考a所指的完全相同的列表。所以当你改变l时,你也改变了a,因为它们是一样的东西

如果您将该行更改为以下内容,它将起作用:

l = list(a)

这表示创建一个新的列表对象,该对象是a的副本,并将l指向该新列表。现在,当您对l进行更改时,您不会影响a。

您将用下半部分的内容覆盖列表的前半部分。假设您从列表[1,2]开始。在第一次迭代之后,您有[2,2]。列表中已没有1可复制到第二个插槽。