码步停蹄 2023-07-04 12:46 采纳率: 80%
浏览 32

PYTHON函数对列表修改产生了奇怪的问题

我有一个函数change(),我想要它对一个列表进行修改,并输出原列表和新列表,但我发现了很奇怪的问题:
求指点,为什么第二次代码,新旧列表会一样


def change(old):
    new = old[:]
    print(old)

    new[1] = 22
    #当我对列表的一号索引修改值后,一切正常
    print("-------")
    print(old)
    print(new)


aa = [[5, 2], ['AAA']]
change(aa)

def change(old):
    new = old[:]
    print(old)

    #当我对列表的0号索引的一号索引修改值后,新旧列表变成相同的了
    new[0][1] = 33
    print("-------")
    print(old)
    print(new)


aa = [[5, 2], ['AAA']]
change(aa)


  • 写回答

4条回答 默认 最新

  • threenewbee 2023-07-04 13:21
    关注

    new = old[:]
    这个导致复制了一份,之后new就和old无关了,修改new自然不会作用到old上

    评论

报告相同问题?

问题事件

  • 创建了问题 7月4日

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 易优eyoucms关于二级栏目调用的问题
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题