当前位置: 首页 > 编程笔记 >

python复制与引用用法分析

史英飙
2023-03-14
本文向大家介绍python复制与引用用法分析,包括了python复制与引用用法分析的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了python复制与引用用法。分享给大家供大家参考。具体分析如下:

简单复制是引用

a=[1,23,4]
b=a #这是引用
b.append(2323)
print(a,b) #([1, 23, 4, 2323], [1, 23, 4, 2323])

使用copy.copy进行浅拷贝

import copy
c=copy.copy(b)#拷贝
c.append(1)
print(b,c)#([1, 23, 4, 2323], [1, 23, 4, 2323, 1])
list1=[['a'],[1,2,4],[23,'a']]
list_copy=copy.copy(list1)
#浅拷贝,生成了一个新对象,但是新对象内的属性和内容仍然是原对象的引用

#当对新对象进行整体修改的时候修改的是本身
list_copy.append('append')
print(list_copy)#[['a'], [1, 2, 4], [23, 'a'], 'append']
print(list1)#[['a'], [1, 2, 4], [23, 'a']]

#当对新对象的内容进行修改的时候修改的是原对象,因为它仍然是引用
list_copy[1].append('append+')
print(list_copy)#[['a'], [1, 2, 4, 'append+'], [23, 'a'], 'append']
print(list1)#[['a'], [1, 2, 4, 'append+'], [23, 'a']]

使用copy.deepcopy进行迭代拷贝,之后就可以更改新对象的属性而不影响原对象了,只是效率会下降和内存占有量会上升。

对于list,dict,set等可直接使用x(object),object为相应类型,进行拷贝,这是最简单最直接有效地方式。

希望本文所述对大家的Python程序设计有所帮助。

 类似资料:
  • 实现效果 这个部分主要是帮助你通过不同的语句来感受在 JavaScript 中对不同类型数据的引用(Reference)和复制(Copy)的区别。由于操作在 Console 中进行,所以请直接运行页面后打开 Console,边编辑代码,边查看结果。 过程指南 首先从 String、Number、Boolean 类型的值开始。 let age = 100; let age2 = age; co

  • 本文向大家介绍Python中对象的引用与复制代码示例,包括了Python中对象的引用与复制代码示例的使用技巧和注意事项,需要的朋友参考一下 可以说Python没有赋值,只有引用。你这样相当于创建了一个引用自身的结构,所以导致了无限循环。为了理解这个问题,有个基本概念需要搞清楚。 Python没有「变量」,我们平时所说的变量其实只是「标签」,是引用。 python中,"a=b"表示的是对象a引用对象

  • 本文向大家介绍MySQL锁机制与用法分析,包括了MySQL锁机制与用法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了MySQL锁机制与用法。分享给大家供大家参考,具体如下: MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁;BDB存储引擎采用的是页面锁,但也支持表级锁;InnoDB存储引擎既支持行级锁,

  • 本文向大家介绍举例区分Python中的浅复制与深复制,包括了举例区分Python中的浅复制与深复制的使用技巧和注意事项,需要的朋友参考一下 copy模块用于对象的拷贝操作。该模块非常简单,只提供了两个主要的方法: copy.copy 与 copy.deepcopy ,分别表示浅复制与深复制。什么是浅复制,什么是深复制,网上有一卡车一卡车的资料,这里不作详细介绍。复制操作只对复合对象有效。用简单的例

  • 我有一段代码,试图将方法引用(“String::length”)转换为等效的lambda表达式。 注释行中概述了它的唯一工作方式。我需要把论点转换为“p”。 似乎在编译时,如果我使用lambda表达式并且需要显式强制转换,它会将参数“p”的类型指定为对象。见下文: 当我使用String::长度方法引用时,那么在编译时,隐式参数被正确理解为String实例。在这种情况下有什么特别的?见下文。

  • 我是新使用python阅读文本文件。我需要读一个文件,每行有4个我需要的数据,这是我的文本文件 我的问题是,如果我使用,它只用每行创建一个向量,但是我只需要一个向量用于第一列,一个用于第二列,一个用于第三列,还有一个用于第四列...有谁能帮帮我吗?