BBboker 2022-04-19 11:02 采纳率: 100%
浏览 25
已结题

Python 列表链式赋值,改动后为啥其他的也变了

问题遇到的现象和发生背景
来一个形象的比喻,比如有

A, B, C, D四个人,我给A起名为项羽,然后我让B,C,D的名字为A,随后我改了B的名字为刘邦,结果A,C,D三个人也同时改了名字,

问题相关代码,请勿粘贴截图
a = [1, 2, 3, 4, 5, 6]
b = a
b.append('w')
print(a)
运行结果及报错内容

[1, 2, 3, 4, 5, 6, 'w']
运行的结果是a也同步改变了

我的解答思路和尝试过的方法

将a与b以及其他的人直接赋值到列表,但是这样不够简便假如我有一串很长的数据

我想要达到的结果

假如这是一串很多数据的列表,我需要对这串列表做不同的改动分别保存,那么我应该怎样赋值,才能让a,b,c,d各自变化互不影响,
谢谢解答。

  • 写回答

3条回答 默认 最新

  • chuifengde 2022-04-19 11:36
    关注

    首先要分清:什么是可变类型数据,什么是不可变类型数据
    其次要分清:python的变量与具体数据之间的关系是绑定关系,可以看作是贴标签
    你上面就是同一个数据贴了好几个标签,按照某个标签找到了数据,然后又把数据给改了,其它的标签访问的就是这个改了的数据。
    弄懂了原理,只要把原始数据换成一个新的地址,原来的标签就再也找不到现在改动的数据了
    比如:
    b = a[:]
    b = [i for i in a]
    b = a.copy()
    b = list(a)
    这四种都可以

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月27日
  • 已采纳回答 4月19日
  • 创建了问题 4月19日

悬赏问题

  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图