首页 > 解决方案 > 为什么修改函数内另一个列表的副本的列表会影响原始列表?

问题描述

我想要:

  1. 创建一个已经存在的全局列表的副本,
  2. 修改这个新列表的内容而不影响原来的,
  3. 打印两个列表

都在一个函数内。

我的代码:

original_list = ['tom', 'adam', 'john']
def a():
    new_list = original_list
    new_list[1] = 'simon'
    print(original_list, new_list)

a()

预期结果:

['tom', 'adam', 'john'] ['tom', 'simon', 'john']

实际结果:

['汤姆','西蒙','约翰'] ['汤姆','西蒙','约翰']

请解释为什么我的代码的行为方式与我期望的不同。

提前致谢!

标签: pythonlistfunction

解决方案


这是因为您没有复制列表,而是指向具有不同变量的同一个列表。

如果您正在使用,则可以在将原始数组分配给新变量时Python3.3+使用该方法。copy如果没有,你可以尝试切片list[:]


推荐阅读