python开发中两个列表之间的传值过程介绍
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,本篇内容主要讲解"python开发中两个列表之间的传值过程介绍",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"python开发中两个列表之间的传值过程介绍"
千家信息网最后更新 2025年02月23日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安全错误
数据库的锁怎样保障安全
腾讯云服务器管理系统
面向对象是一种软件开发方法
网络安全辅助人员需要考什么
深圳市开创网络技术有限公司
瀚高数据库备注字段说明
云服务器2018年租用费
路路通软件开发者
嘉定区软件开发费用
中兴软件开发工程师笔试
上海韧幸网络技术有限公司
审计网络安全工作情况汇报
linux退出数据库
广安网络安全服务生产厂商
农业智慧供排水系统软件开发商
软件开发cda
网警怎么开展网络安全巡查
第八届网络安全宣传周在哪举行
湖北好的软件开发市场
英雄联盟服务器闪退
网络安全模式正常 启动黑屏
苹果手表服务器密码
网络技术基础ppt免费下载
维护数据库安全的技术
怎么连接逍遥魔兽数据库
as中涉及的数据库在哪
喂喂科技互联网劳务
为什么迷你服务器连接不上
vcu软件开发策略制定
mda软件开发
服务器打印后台处理