[英]Python - Why this list doesn't change
我想更改列表的一部分并保存结果。 我想知道为什么这种方法不起作用。 谢谢!
def Test(L):
for i in range(len(L)):
L[i] = L[i][1:]
L = ["-stackoverflow", "-Python", "-C++"]
Test(L[1:])
print(L)
['-stackoverflow', '-Python', '-C++']
['-stackoverflow', 'Python', 'C++']
您使用L[1:]
调用Test()
function,但这只是列表的副本,而不是原始L
列表。 因此,当您修改 function 中的列表时,您修改的是副本。
每当您在列表上使用[:]
时,它都会构建一个新列表。 当您调用Test(L[1:])
时,您没有传递给它L
而是一个与L
无关的全新列表。 您可以在这里做两件事:返回新列表以进行重新分配,或者将L
传递给Test()
而不是L[1:]
。
您的 function 需要返回修改后的列表并在调用者处重新分配。
def Test(L):
for i in range(len(L)):
L[i] = L[i][1:]
return L
L = ["-stackoverflow", "-Python", "-C++"]
L = Test(L[1:])
print(L)
您只需要编写Test(L)
而不是Test(L[1:])
,因为 function 已经为您执行了该操作。
def Test(L):
for i in range(len(L)):
L[i] = L[i][1:]
L = ["-stackoverflow", "-Python", "-C++"]
Test(L)
print(L)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.