【问题标题】:def loop only change list in local scope [duplicate]def循环仅在本地范围内更改列表[重复]
【发布时间】: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 在传递给函数时确实会保留浮点数、整数、... 不变。
谁能解释发生了什么?我应该怎么做才能避免这个问题?

提前致谢

【问题讨论】:

标签: python list function methods scope


【解决方案1】:

list.remove 方法就地更改列表。如果您不想更改给定列表,您可以先复制该列表:

def test(a):
    a = a[:]
    a.remove(1)
    return max(a)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-07
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多