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日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部