首页 > 编程语言 >python中同时将列表赋值多个变量及列表list的复制方法记录

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

时间:2022-10-04 17:23:02浏览次数:87  
标签:QQ 变量 python list 列表 --- 5201351

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

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
print(a,"---",b)

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

对于初学者来说往往有点不容易接受,因为明明是a变量的值改变了,结果b变量的值也跟着一起变化了

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

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

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

这样就会输出:[1, 2, 3] --- [0, 2, 3],即a,b都是不同对象了,只是值都是一样的列表

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

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

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

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

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

 

 

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

 

标签:QQ,变量,python,list,列表,---,5201351
From: https://www.cnblogs.com/5201351/p/16754078.html

相关文章

  • 合并两个list对象集合并排序
    List对象合并后进行排序业务场景用户相关字段数量较多时,会进行分表,用相同的id进行关联,而后进行数据查询时,需要将两张或者多张表的数据进行拼接思路:将其中一个list1转换为map......
  • 合并两个list对象集合并排序
    List对象合并后进行排序业务场景用户相关字段数量较多时,会进行分表,用相同的id进行关联,而后进行数据查询时,需要将两张或者多张表的数据进行拼接思路:将其中一个list1转换为map......
  • python3爬取CSDN个人所有文章列表页
    前言我之前写了下载单篇文章的接口函数,结合这篇写的,就可以下载所有个人的所有文章了代码实现没什么技术含量就是简单的xpath处理,不过有意思的是有一位csdn员工将自己的博客......
  • Python 教程之控制流(9)Python 中的 Switch Case(替换)
    在本文中,我们将尝试理解Python中的SwitchCase(替换)。Python中SwitchCase的替代品是什么?与我们之前使用的所有其他编程语言不同,Python没有switch或case语句。为了绕......
  • Python 教程之控制流(12)组合迭代器
    组合迭代器用于简化组合构造(如排列、组合和笛卡尔积)的递归生成器称为组合迭代器。在Python中,有4个组合迭代器:产品():此工具计算输入可迭代对象的笛卡尔积。为了计算可迭代对象......
  • Python 教程之控制流(10)在Python中有效地使用迭代
    下面是使用迭代器的不同方法。C风格的方法:这种方法需要事先知道迭代的总次数。#访问列表元素的C风格方式cars=["Aston","Audi","McLaren"]i=0while(i<len(cars)......
  • Python 教程之控制流(11)无限迭代器
    Python的Itetool是一个模块,它提供了各种函数,这些函数在迭代器上工作以产生复杂的迭代器。该模块作为一个快速,内存效率的工具,可以单独使用或组合使用以形成迭代器代数。例如......
  • Python 教程之控制流(7)Python中的链接比较运算符
    检查两个以上的条件在编程语言中很常见。假设我们要检查以下条件:a<b<c最常见的语法如下:ifa<band在Python中,有一种更好的方法可以使用比较运算符Chaining来编写它......
  • Python 教程之运算符(14)Python中==和is运算符的区别
    相等运算符(==)是Python中的比较运算符,用于比较两个操作数的值并检查值是否相等。而“ is”运算符是标识运算符,用于检查两个操作数是否引用同一个对象(存在于同一个内......
  • Python 教程之控制流(6)打印金字塔图案的程序
    可以使用简单的for循环在python中打印模式。第一个外循环用于处理行数,而内嵌套循环用于处理列数。操作打印语句,可以打印不同的数字图案、字母图案或星形图案。 本文展......