- 有时候,需要禁止函数修改列表,此时,就可以向函数传递列表的副本而非原件。这样,函数所做的任何修改都只影响副本,而原件丝毫不受影响。要将列表的副本传递给函数,可以象下面这样传递列表的切片:
function_name(list_name[:])
- 虽然向函数传递列表的副本可以保留原始列表的内容,但要有充分的理由这样做。否则,还是应该将原始列表传递给函数,这样可以避免花时间和内存创建副本,从而提升效率。
示例:
def transfer(from_names, final_names):
"""将列表from_names中的元素转移到final_names中"""
while from_names:
# 从列表from_names的末尾弹出一个元素
name = from_names.pop()
# 将元素添加到列表final_names的末尾
final_names.append(name)
# 创建一个列表
original_names = ["Thb", "Ding", "Li"]
# 创建一个空列表
final_names = []
# 将original_names列表副本中的元素转移到final_names中
transfer(original_names[:], final_names)
print("目标列表的内容: ")
print(final_names)
print("原始列表的内容:")
print(original_names)
运行输出:
从上面输出可以看出,原始列表中的内容没有改变。