【发布时间】:2019-10-08 20:41:15
【问题描述】:
在 Python 3 中,我想定义一个函数,它接收列表 a,执行一些操作,然后返回 a 的一些属性。 问题是 我希望 a 保持不变。
以下面的代码为例
def test(a):
a.remove(1)
return max(a)
当我运行它时,我得到:
>>> b = [0,1,2,3]
>>> test(b)
3
>>> b
[0,2,3]
而我希望 b 保持不变
>>> b
[0,1,2,3]
我觉得这很令人困惑,因为 Python 在传递给函数时确实会保留浮点数、整数、... 不变。
谁能解释发生了什么?我应该怎么做才能避免这个问题?
提前致谢
【问题讨论】:
-
区别在于浮点数和整数是不可变的,而列表不是
-
赋值不是突变;
b = [1]与b.append(1)非常不同。
标签: python list function methods scope