python开发中两个列表之间的传值过程介绍
发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,本篇内容主要讲解"python开发中两个列表之间的传值过程介绍",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"python开发中两个列表之间的传值过程介绍"
千家信息网最后更新 2025年11月11日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安全错误
数据库的锁怎样保障安全
云南保山dns服务器云空间
jsp提取数据再修改数据库
申请微信运动数据库
全国省市车牌代码数据库
北京乐学帮网络技术招聘
数据库技术全部课件
java 数据库取值运算
力控服务器客户端设置
万方数据资源专利数据库
郑州社区团购软件开发
国家网络安全班会的活动背景
数据库编写代码查看当前的日期
数据库主键的好处
进入网络安全模式能上网吗
feenix服务器
香港云服务器推荐
数据库中的STC表
邵阳软件开发培训费用
新一代网络技术及应用测试答案
万德网络技术服务部qq
数据库好学
注册资本对软件开发公司影响
服务器出错522
关系型数据库三种组成
浙江省三级数据库技术
看网络安全公开课有感
五一为互联网科技公司
电脑数据库删除了怎么办
网易游戏服务器
服务器外包平台