MST

星途 面试题库

面试题:Python中禁止函数修改列表的常规策略实现

请描述在Python中,如何通过某种策略禁止函数对传入的列表进行修改。并给出具体的代码示例,且解释代码实现的原理。
22.8万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

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