繁体   English   中英

Python - 为什么这个列表没有改变

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM