我正在尝试反转一个列表,虽然我找到了 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)
我正在尝试反转一个列表,虽然我找到了 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)
问题是这条线:
l = a
让您感到困惑的是,该变量a是对列表对象的引用。当您说l = a您实质上是在说“使l引用完全相同的列表a”时。因此,当您做出改变时,l您也在做出改变,a因为它们是相同的。
如果将行更改为以下内容,它将起作用:
l = list(a)
这表示“创建一个新列表对象,它是该新列表的副本a并指向l该新列表。” 现在,当您进行更改时,l您不会影响a.
当您执行 `l=a' 时,您正在分配对原始列表的引用,因此您的操作将在原始列表上执行。尝试使用 'l = [c for c in a]' 或 'l = list(a)' 来代替,以便对原始列表的副本进行操作。