python开发中两个列表之间的传值过程介绍
发表于:2024-10-12 作者:千家信息网编辑
千家信息网最后更新 2024年10月12日,本篇内容主要讲解"python开发中两个列表之间的传值过程介绍",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"python开发中两个列表之间的传值过程介绍"
千家信息网最后更新 2024年10月12日python开发中两个列表之间的传值过程介绍
本篇内容主要讲解"python开发中两个列表之间的传值过程介绍",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"python开发中两个列表之间的传值过程介绍"吧!
首先对于一个单层的列表
赋值如下,可以看见,如果直接使用 = 的话。其中一个变换便会引起另外一个变换,这时因为这两个list被python解释的时候使用的相同的地址,如下面输出的 id()中的内容,所以此时如果想让一个列表接收到另外一个列表的值,并且在接收到值后不会因为其中任意一个值的改变而改变,这时候就需要使用copy方法,这里可以解释成,当使用了copy方法后,python单独创建了找个一个内存区的地址放了新的那个值。
a = [ 1,2,3]b = aa[0] = a[0] +1print(a)print(b)print(id(a[0]))print(id(b[0]))print("*"*20)a1 = [5,6,7]b1 = a1.copy()a1[0] = a1[0] + 1print(a1)print(b1)print(id(a1[0]))print(id(b1[0]))
输出
[2, 2, 3][2, 2, 3]140729246982592140729246982592********************[6, 6, 7][5, 6, 7]140729246982720140729246982688
对于多层列表
这也是我今天被坑的地方,注意到了第一层,但却没有注意到第二层,如下可以看见,虽然我们使用了copy方法,但是内层[]则没有
a = [[1,2,4],[3,5,8],[],[]]b = a.copy()print("打印数组地址:")print(id(a))print(id(b))print("*"*40)print("打印内层元素地址:")print(id(a[0]))print(id(b[0]))print(id(a[0][0]))print(id(b[0][0]))print("*"*40)a.append(4)a[1][0] = a[1][0] + 1print(a)print(b)print(id(a[4]))
输出
打印数组地址:19388789795281938879043976****************************************打印内层元素地址:19388777312081938877731208140729246982560140729246982560****************************************[[1, 2, 4], [4, 5, 8], [], [], 4][[1, 2, 4], [4, 5, 8], [], []]140729246982656
所以赋值操作应该为:
import copya = [[1,2,4],[3,5,8],[],[]]# b = a.copy()b = copy.deepcopy(a)
即使用 copy.deepcopy 进行赋值操作,这时候当对a的内层元素进行操作之后,b不会跟着改变,
不过这里需要注意的是(不得不说这个设计节省内存真的很精妙),如果不更改a和b内部元素的值的话,那么a和b内部元素的值他们的地址还是相同的,只有在一方更改了自身地址内的值的时候,地址才会更改。
import copya = [[1,2,4],[3,5,8],[],[]]# b = a.copy()b = copy.deepcopy(a)print("打印数组地址:")print(id(a))print(id(b))print("*"*40)print("打印内层元素地址:")print(id(a[0]))print(id(b[0]))print("0"*50)print(id(a[0][0]))print(id(b[0][0]))print("10"*50)print("\n")print(a[1][0])print(b[1][0])print(id(a[1][0]))print(id(b[1][0]))print("10"*50)print("\n")# print("*"*40)# a.append(4)a[1][0] = a[1][0] + 1## print(a)# print(b)# print(id(a[4]))# print("\n")print("10"*50)print(a[1][0])print(b[1][0])print(id(a[1][0]))print(id(b[1][0]))print("10"*50)print("\n")b[1][0] = b[1][0] + 2print(id(b[1][0]))
输出
打印数组地址:16962612902481696261352200****************************************打印内层元素地址:169625769204016943687072720000000000000000000000000000000000000000000000000014072913334313614072913334313610101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010103314072913334320014072913334320010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010431407291333432321407291333432001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010140729133343264
到此,相信大家对"python开发中两个列表之间的传值过程介绍"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
地址
元素
内层
两个
数组
方法
输出
之间
过程
开发
内容
相同
内存
时候
变换
学习
解释
实用
更深
精妙
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
php数据库查询效率
软件开发属于哪种税收分类
祁连住宿软件开发
数据库如何删除表的对象
先系统设计还是数据库设计
陈志泊数据库第四版简答题
软件开发适合移动公司
sql数据库创建视图的步骤
互联网科技市值排名
计算机软件开发的行业法规
数据库4个内置函数
关系型数据库核心技术
单位网络安全情况说明
最新软件开发技术
一下科技互联网晚会
形成数据库表的过程
服务器最新漏洞
网络安全意识和软件正版化
网络安全意识量表问卷
如何管理自己的服务器不被炸掉
连云港ios系统软件开发
软件开发纠纷 尾款
甘肃网络技术服务工程
软件开发过程的模型迭代模型
安宁综合软件开发零售价格
java数据库自增长单词
软件开发 立项 推荐
软件开发合同代码注释
服务器生存1免费观看
中科大网络安全专业研究生