返回顶部
首页 > 资讯 > 后端开发 > Python >python开发中两个list之间传值示例
  • 643
分享到

python开发中两个list之间传值示例

2024-04-02 19:04:59 643人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

由于改代码因为这个问题卡了半个小时特此记录 首先对于一个单层的列表 赋值如下,可以看见,如果直接使用 = 的话。其中一个变换便会引起另外一个变换,这时因为这两个list被python

由于改代码因为这个问题卡了半个小时特此记录

首先对于一个单层的列表

赋值如下,可以看见,如果直接使用 = 的话。其中一个变换便会引起另外一个变换,这时因为这两个list被python解释的时候使用的相同的地址,如下面输出的 id()中的内容,所以此时如果想让一个列表接收到另外一个列表的值,并且在接收到值后不会因为其中任意一个值的改变而改变,这时候就需要使用copy方法,这里可以解释成,当使用了copy方法后,Python单独创建了找个一个内存区的地址放了新的那个值。


a = [ 1,2,3]
b = a
a[0] = a[0] +1
print(a)
print(b)
print(id(a[0]))
print(id(b[0]))
print("*"*20)
a1 = [5,6,7]
b1 = a1.copy()
a1[0] = a1[0] + 1
print(a1)
print(b1)
print(id(a1[0]))
print(id(b1[0]))


输出


[2, 2, 3]
[2, 2, 3]
140729246982592
140729246982592
********************
[6, 6, 7]
[5, 6, 7]
140729246982720
140729246982688

对于多层列表

这也是我今天被坑的地方,注意到了第一层,但却没有注意到第二层,如下可以看见,虽然我们使用了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] + 1
print(a)
print(b)
print(id(a[4]))

输出


打印数组地址:
1938878979528
1938879043976
****************************************
打印内层元素地址:
1938877731208
1938877731208
140729246982560
140729246982560
****************************************
[[1, 2, 4], [4, 5, 8], [], [], 4]
[[1, 2, 4], [4, 5, 8], [], []]
140729246982656

在这里插入图片描述

所以赋值操作应该为:


import copy
a = [[1,2,4],[3,5,8],[],[]]
# b = a.copy()
b =  copy.deepcopy(a)

即使用 copy.deepcopy 进行赋值操作,这时候当对a的内层元素进行操作之后,b不会跟着改变,
不过这里需要注意的是(不得不说这个设计节省内存真的很精妙),如果不更改a和b内部元素的值的话,那么a和b内部元素的值他们的地址还是相同的,只有在一方更改了自身地址内的值的时候,地址才会更改。


import copy
a = [[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] + 2
print(id(b[1][0]))

输出


打印数组地址:
1696261290248
1696261352200
****************************************
打印内层元素地址:
1696257692040
1694368707272
00000000000000000000000000000000000000000000000000
140729133343136
140729133343136
1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

3
3
140729133343200
140729133343200
1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010
4
3
140729133343232
140729133343200
1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

140729133343264

以上就是python开发中两个list之间传值示例的详细内容,更多关于python中list列表两表传值的资料请关注编程网其它相关文章!

--结束END--

本文标题: python开发中两个list之间传值示例

本文链接: https://lsjlt.com/news/134652.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python开发中两个list之间传值示例
    由于改代码因为这个问题卡了半个小时特此记录 首先对于一个单层的列表 赋值如下,可以看见,如果直接使用 = 的话。其中一个变换便会引起另外一个变换,这时因为这两个list被python...
    99+
    2024-04-02
  • Android开发两个activity之间传值示例详解
    目录使用Inten的putExtra传递使用Intention的Bundle传递使用Activity销毁时传递数据SharedPreferences传递数据使用序列化对象Seriaz...
    99+
    2024-04-02
  • c#中两个窗体之间怎么传值
    在C#中,可以通过以下几种方式在两个窗体之间传值: 使用构造函数传递值:在第二个窗体的构造函数中添加参数,将需要传递的值作为参数...
    99+
    2023-10-27
    c#
  • Javascript如何在两个窗体之间传值
    本篇内容主要讲解“Javascript如何在两个窗体之间传值”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Javascript如何在两个窗体之间传值”吧!如我们新建窗体 FatherPage.h...
    99+
    2023-06-27
  • python开发之list操作实例分析
    本文实例分析了python开发之list操作。分享给大家供大家参考,具体如下: 对python中list的操作,大家可以参考《Python list操作用法总结》 以下是我个人的笔记: #python ...
    99+
    2022-06-04
    实例 操作 python
  • Android 两个Fragment之间传递数据实例详解
     Android 两个Fragment之间如何传递数据 FragmentA启动FragmentB,做一些选择操作后,返回FragmentA,需要把FragmentB里...
    99+
    2022-06-06
    数据 fragment Android
  • Android开发Intent跳转传递list集合实现示例
    目录引言传递list集合传递ArrayList集合传递实体类传递String引言 Android 两个activity之间普通传值 如:单个String ,int ... 就不多说了...
    99+
    2024-04-02
  • java实现两个对象之间传值及简单的封装
    目录java两个对象之间传值及封装java 参数传递、对象、封装面向对象的三大特征封装表现封装的好处构建set、get方法java两个对象之间传值及封装 在项目里面使用SSH框架的过...
    99+
    2024-04-02
  • MySQL 中如何计算两个时间值之间的差异?
    借助 TIMEDIFF() MySQL 函数,可以计算两个时间值之间的差异。示例mysql> Select TIMEDIFF('04:05:45','03:05:45') AS ‘Diffe...
    99+
    2023-10-22
  • Android中两个Activity之间数据传递及返回问题
    下面通过一个例子来详细说明 先上代码,再细细分析 MainActivity public class MainActivity extends Activity { ...
    99+
    2022-06-06
    数据 activity Android
  • Java中两个List之间的比较方法(差集、交集和并集)
    目录求差集求交集求并集(不去重)求并集(去重)实际业务场景建立关联产品Vo业务代码实现总结实现比较两个List之间的差异,包括获取两List的差集,交集,并集(不去重&去重)...
    99+
    2024-04-02
  • python编程开发时间calendar模块示例分析
    本篇内容主要讲解“python编程开发时间calendar模块示例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python编程开发时间calendar模块示例分析”吧!calendar模块...
    99+
    2023-06-25
  • python开发任意表达式求值全功能示例
    目录正文完整的源代码正文 在之前的基础上进一步实现了全功能表达式求值。 已支持浮点数已支持字符串的处理,前加一个"(类似lisp语法)支持减号/负号,一符两用机制支持所有算...
    99+
    2024-04-02
  • Spring注解驱动开发之属性赋值的示例分析
    这篇文章给大家分享的是有关Spring注解驱动开发之属性赋值的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、@Value注解在Person的属性上使用@Value注解指定注入值public ...
    99+
    2023-06-15
  • Python脚本开发中的命令行参数及传参示例详解
    目录sys模块argparse模块Python中的正则表达式 正则表达式简介Re模块常用的匹配规则sys模块 在使用python开发脚本的时候,作为一个运维工具,或者是其他...
    99+
    2024-04-02
  • python中的mock接口开发示例详解
    什么是mock mock在翻译过来有模拟的意思。它允许您用模拟对象替换您的系统的部分,并对它们已使用的方式进行断言。 Mock通常是指,在测试一个对象时,我们构造一些假的对象来模拟与...
    99+
    2024-04-02
  • python编程开发时间序列calendar模块示例详解
    目录calendar模块设置每周第一天1、默认情况:礼拜一是第一天2、设置任意一天是否闰年年份间的闰年数星期几monthrange(year, month)月的日历矩阵月的日历年的日...
    99+
    2024-04-02
  • Python个人博客程序开发实例信息显示
    目录1.分页显示文章列表1.1 获取分页记录1.2 渲染分页导航部件2.显示文章正文3.文章固定链接4.显示分类文章列表5.显示评论列表6.发表评论与回复7.支持回复评论8.网站主题...
    99+
    2022-12-09
    Python个人博客系统 Python个人博客搭建
  • Android中点击按钮启动另一个Activity及Activity之间传值问题
    场景 点击第一个Activity中的按钮,启动第二个Activity,关闭第二个Activity,返回到第一个Activity。 在第一个Activity中给第二个Activi...
    99+
    2022-06-06
    启动 activity 按钮 Android
  • nodejs个人博客开发之入口文件的示例分析
    这篇文章主要为大家展示了“nodejs个人博客开发之入口文件的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“nodejs个人博客开发之入口文件的示例分析...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作