【发布时间】:2020-10-24 21:09:20
【问题描述】:
我试图通过将列表作为参数传递给函数来找到改变列表的解决方案。例如:
def f(x):
x = x*2
x = [9,8,7]
f(x)
print(x)
我希望结果是:
[9, 8, 7, 9, 8, 7]
但结果是这样的:
[9, 8, 7]
然后我偶然发现了这个帖子:https://stackoverflow.com/a/31359713/13275449
这个解决方案效果很好
def f(x):
x[:] = x*2
x = [9,8,7]
f(x)
print(x)
[9, 8, 7, 9, 8, 7]
我的问题是为什么我们需要 [:] ?我认为它反过来,如果我们不想改变原始列表,我们在它后面加上 [:] 来复制它。但这似乎是相反的。它可能与全局和函数范围有关。我尝试使用pythontutor但仍然感到困惑。
谢谢!
编辑:分号 -> 冒号
【问题讨论】:
-
那不是分号。
-
您是否忘记从函数中返回它?请注意,在第一种情况下,您只是将变量 x 重新分配给其他东西(x * 2 创建一个新列表)。
标签: python python-3.x list function copy