python复制与引用用法分析

yipeiwu_com5年前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程序设计有所帮助。

相关文章

python+ffmpeg视频并发直播压力测试

通过python与ffmpeg结合使用,可生成进行视频点播、直播的压力测试脚本。可支持不同类型的视频流,比如rtmp或者hls形式。 通过如下方式执行脚本:python multiRe...

PyCharm中代码字体大小调整方法

PyCharm中代码字体大小调整方法

Python的火也引发了Python编辑器的火,那么作为Python编辑器的PyCharm对于代码字体大小该怎么调整呢,小编此次就带给大家调整方法 首先在桌面找到PyCharm软件打开,...

python 定义类时,实现内部方法的互相调用

每次调用内部的方法时,方法前面加 self. 举例: 例子参考百度知道里面的回答 class MyClass: def __init__(self): pass de...

利用pyuic5将ui文件转换为py文件的方法

利用pyuic5将ui文件转换为py文件的方法

操作系统上正确配置python环境之后,pyuic5也是一个可以识别的命令行指令 到.ui文件的目录下,直接cmd进入,输入pyuic5 -o 转换的py文件 待转换的ui文件 此时,...

DataFrame:通过SparkSql将scala类转为DataFrame的方法

如下所示: import java.text.DecimalFormat import com.alibaba.fastjson.JSON import com.donews.dat...