• python中同时将列表赋值多个变量及列表list的复制方法记录


    有时如果有多个变量,初始值都是一样的列表的情况,我们常常会以如下方式定义

    a=b=[1,2,3,"QQ:5201351"],或者 b=[1,2,3,"QQ:5201351"] ; a=b

    但是对于列表这样定义,如果不对其有着清晰的理解 ,后续的有些操作的结果可能会超乎自己的意料,如下:

    a=b=[1,2,3,"QQ:5201351"]
    a[0]=0
    b[1]=1
    print(a,"---",b)

    运行的结果将是:[0, 1, 3, 'QQ:5201351'] --- [0, 1, 3, 'QQ:5201351']

    对于初学者来说往往有点不容易接受,变量a值变了,变量b也会跟着一起变,反之效果一样

    上面方式的定义,实际上,是多个变量,同时指向到了同一个内存空间的列表的内容,列表是可以修改的,也可以理解成常规复制

    如果需要将a与b指向不同的列表,就必须将其中一个关联到另一个变量的副本,可以通过列表的.copy()方法

    a=[1,2,3]
    b=a.copy()
    a[0]=0
    b[1]=1
    print(a,"---",b)

    这样就会输出:[0, 2, 3] --- [1, 1, 3],即a与b是两个独立的列表了,彼此的改变都不会影响到对方

    但是注意一点,不能这样,a=b=[1,2,3].copy() 在定义的时候就使用列表的.copy(),这样写了之后和最前面的常规复制又一样了

    另外还可以使用a[:] 或者 list(a) 的方式,也能实现真正的复制效果

    a=[1,2,3]
    b=a[:]
    a[0]=0
    b[1]=1
    print(a,"---",b)

    这样会输出:[0, 2, 3] --- [1, 1, 3],即a与b彼此的改变,都不会影响到对方

    将b=a[:] 改成 a=list(a),效果也是一样的,也是真正的复制效果,两个变量的内容都是指向不同的内存空间了

    尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/16754078.html

  • 相关阅读:
    [写代码]处理一组lrc歌词文件
    [ubuntu]windows重装以后,恢复grub引导
    [HDOJ1878]欧拉回路
    [写代码]解析自定义数据库文件的思路
    [写代码]wordList——百词斩CLI版
    [HDOJ2544]最短路
    [HDOJ1285] 确定比赛名次
    [HDOJ1232]畅通工程
    [HDOJ2717]Catch That Cow
    jQuery实现点击开关图片切换
  • 原文地址:https://www.cnblogs.com/5201351/p/16754078.html
Copyright © 2020-2023  润新知