Python中如何修改list_x而不影响关联的list_y?
如何修改list_x而不改变list_y?
当你执行list_x = list_y = [6,1,2,3,4]时,list_x和list_y指向的是内存中同一个列表对象——它们只是同一个列表的两个别名而已,所以修改其中一个的元素,另一个必然同步变化。
要实现仅修改list_x而不影响list_y,核心是让两个变量指向独立的列表对象,以下是几种常用方法:
分别初始化独立列表
直接为两个变量各自创建新的列表实例,从根源上避免共享对象:list_x = [6, 1, 2, 3, 4] list_y = [6, 1, 2, 3, 4] list_x[0] = 0 print(list_y) # 输出: [6, 1, 2, 3, 4]利用切片生成浅拷贝
使用切片[:]可以快速生成原列表的副本,让list_x指向这个新副本:list_y = [6, 1, 2, 3, 4] list_x = list_y[:] # 等价于 list_x = list(list_y) list_x[0] = 0 print(list_y) # 输出: [6, 1, 2, 3, 4]使用
copy模块进行拷贝
对于无嵌套结构的简单列表,用copy.copy()做浅拷贝即可;如果列表包含嵌套的可变对象(比如子列表),则需要用copy.deepcopy()实现完全独立的深拷贝:import copy list_y = [6, 1, 2, 3, 4] list_x = copy.copy(list_y) # 浅拷贝,适合简单列表 # 若列表有嵌套,改用深拷贝: # list_x = copy.deepcopy(list_y) list_x[0] = 0 print(list_y) # 输出: [6, 1, 2, 3, 4]
内容的提问来源于stack exchange,提问作者allCodeBreaker
相关产品推荐
相关产品推荐

