Python函数返回新列表而不修改输入列表

nos*_*nos 2 python copy list

伙计们,

我想有一个函数,它将列表作为输入,返回另一个列表,它是输入的修改,但我不想更改原始列表.以下代码是否是我能做的最好的代码?

另外,为了避免错误,如果我将元组(a)传递给函数modify(a)函数并将元组转换为modify(a)函数内的列表会更好吗?

非常感谢您的回复.

def modify(a):
    b = a[:]
    # some changes on b here
    ......
    return b      
Run Code Online (Sandbox Code Playgroud)

ale*_*xis 5

如果您的列表包含任何子列表,词典或其他"可变"元素,并且您的算法可能会对它们进行更改,那么oldlist[::-1]提供给您的浅列表副本是不够的.使用deepcopy模块copy制作完全独立的输入副本.

from copy import deepcopy
newlist = deepcopy(oldlist)
Run Code Online (Sandbox Code Playgroud)