-1

我正在尝试反转一个列表,虽然我找到了 andiffernet 的方法,但我仍然不明白为什么下面的方法不起作用......帮助,它让我发疯!

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)
4

2 回答 2

1

问题是这条线:

l = a

让您感到困惑的是,该变量a是对列表对象的引用。当您说l = a您实质上是在说“使l引用完全相同的列表a”时。因此,当您做出改变时,l您也在做出改变,a因为它们是相同的。

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

l = list(a)

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

于 2020-08-06T21:21:12.790 回答
0

当您执行 `l=a' 时,您正在分配对原始列表的引用,因此您的操作将在原始列表上执行。尝试使用 'l = [c for c in a]' 或 'l = list(a)' 来代替,以便对原始列表的副本进行操作。

于 2020-08-06T21:20:49.230 回答