- 策略:
- 可以通过创建传入列表的副本,在函数内部对副本进行操作,而不直接操作原始列表。这样就避免了对原始传入列表的修改。
- 代码示例:
def process_list(lst):
# 创建列表的副本
new_lst = lst.copy()
# 对副本进行操作,例如排序
new_lst.sort()
return new_lst
original_list = [3, 1, 2]
result = process_list(original_list)
print("原始列表:", original_list)
print("处理后的列表:", result)
- 原理解释:
lst.copy()
方法创建了 lst
的一个浅拷贝。浅拷贝意味着新列表 new_lst
是一个全新的列表对象,但是如果 lst
中的元素是可变对象(例如列表中的列表),这些内部的可变对象仍然是共享的。在这个简单示例中,列表元素都是不可变的整数,所以新列表 new_lst
与原始列表 lst
完全独立。
- 然后对
new_lst
进行排序操作,这样就不会影响到原始的 lst
。最后返回 new_lst
,而原始的 original_list
保持不变。