方式一:使用切片 [:]

列表

# 浅拷贝 [:]
old_list = [1, 2, [3, 4]]
new_list = old_list[:]old_list.append(5)
old_list[2][0] += 97print("Old list:", old_list, "old list id:", id(old_list), " old list[0] id:", id(old_list[2]))
print("new list:", new_list, "new list id:", id(new_list), " new list[0] id:", id(new_list[2]))# 输出结果
Old list: [1, 2, [100, 4], 5] old list id: 4537660608  old list[0] id: 4537659840
new list: [1, 2, [100, 4]] new list id: 4537711424  new list[0] id: 4537659840

方式二:使用工厂函数

工厂函数简介

  • 工厂函数看上去像函数,但实际是一个类
  • 调用时,生成该数据类型类型的一个实例

可变对象的工厂函数

  • list()
  • set()
  • dict()

列表

old_list = [1, 2, [3, 4]]
new_list = list(old_list)old_list.append(5)
old_list[2][0] += 97print("Old list:", old_list, "old list id:", id(old_list), " old list[0] id:", id(old_list[2]))
print("new list:", new_list, "new list id:", id(new_list), " new list[0] id:", id(new_list[2]))

集合

old_set = {1, 2, 3}
new_set = set(old_set)old_set.add(4)print("Old set:", old_set, "old set id:", id(old_set))
print("new set:", new_set, "new set id:", id(new_set))# 输出结果
Old set: {1, 2, 3, 4} old set id: 4484723648
new set: {1, 2, 3} new set id: 4484723872

字典

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:725638078
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
old_dict = {"name": "小明"}
new_dict = dict(old_dict)old_dict["second"] = "Python"print("Old dict:", old_dict, "old dict id:", id(old_dict))
print("new dict:", new_dict, "new dict id:", id(new_dict))# 输出结果
Old dict: {'name': '小明', 'second': 'Python'} old dict id: 4514161536
new dict: {'name': '小明'} new dict id: 4515690304

方式三:使用数据类型自带的 copy 方法

列表

old_list = [1, 2, [3, 4]]
new_list = old_list.copy()old_list.append(5)
old_list[2][0] += 97print("Old list:", old_list, "old list id:", id(old_list), " old list[0] id:", id(old_list[2]))
print("new list:", new_list, "new list id:", id(new_list), " new list[0] id:", id(new_list[2]))# 输出结果
Old list: [1, 2, [100, 4], 5] old list id: 4309832000  old list[0] id: 4310372992
new list: [1, 2, [100, 4]] new list id: 4309735296  new list[0] id: 4310372992

集合

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:725638078
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
old_set = {1, 2, 3}
new_set = old_set.copy()old_set.add(4)print("Old set:", old_set, "old set id:", id(old_set))
print("new set:", new_set, "new set id:", id(new_set))# 输出结果
Old set: {1, 2, 3, 4} old set id: 4309931392
new set: {1, 2, 3} new set id: 4309930944

字典

old_dict = {"name": "小明"}
new_dict = old_dict.copy()old_dict["second"] = "Python"print("Old dict:", old_dict, "old dict id:", id(old_dict))
print("new dict:", new_dict, "new dict id:", id(new_dict))# 输出结果
Old dict: {'name': '小明', 'second': 'Python'} old dict id: 4308452288
new dict: {'name': '小明'} new dict id: 4308452224

源码

    def copy(self, *args, **kwargs): # real signature unknown""" Return a shallow copy of the list. """pass

已经写的很清楚,这是浅拷贝

方式四:使用 copy 模块的 copy 方法

列表

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:725638078
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
from copy import copyold_list = [1, 2, [3, 4]]
new_list = copy(old_list)old_list.append(5)
old_list[2][0] += 97print("Old list:", old_list, "old list id:", id(old_list), " old list[0] id:", id(old_list[2]))
print("new list:", new_list, "new list id:", id(new_list), " new list[0] id:", id(new_list[2]))# 输出结果
Old list: [1, 2, [100, 4], 5] old list id: 4381013184  old list[0] id: 4381159936
new list: [1, 2, [100, 4]] new list id: 4381012800  new list[0] id: 4381159936

集合

from copy import copyold_set = {1, 2, 3}
new_set = copy(old_set)old_set.add(4)print("Old set:", old_set, "old set id:", id(old_set))
print("new set:", new_set, "new set id:", id(new_set))# 输出结果
Old set: {1, 2, 3, 4} old set id: 4381115552
new set: {1, 2, 3} new set id: 4381115776

字典

from copy import copyold_dict = {"name": "小明"}
new_dict = copy(old_dict)old_dict["second"] = "Python"print("Old dict:", old_dict, "old dict id:", id(old_dict))
print("new dict:", new_dict, "new dict id:", id(new_dict))# 输出结果
Old dict: {'name': '小明', 'second': 'Python'} old dict id: 4381159680
new dict: {'name': '小明'} new dict id: 4379632576

结尾给大家推荐一个非常好的学习教程,希望对你学习Python有帮助!

Python基础入门教程推荐

Python爬虫案例教程推荐

Python 中浅拷贝的四种实现方法相关推荐

  1. python安装第三方库-python第三方库的四种安装方法

    讲解一下python第三方库的四种安装方法 问题场景 (我的操作系统windows): 我使用pip install selenium 发现先爆出一大段黄色警告日志,最后是两段红色的错误日志,无法成功 ...

  2. python list方法说明_对python中list的五种查找方法说明

    Python中是有查找功能的,五种方式:in.not in.count.index,find 前两种方法是保留字,后两种方式是列表的方法. 下面以a_list = ['a','b','c','hell ...

  3. python list find函数_对python中list的五种查找方法说明

    Python中是有查找功能的,五种方式:in.not in.count.index,find 前两种方法是保留字,后两种方式是列表的方法. 下面以a_list = ['a','b','c','hell ...

  4. 大数据可视化python_大数据分析之Python数据可视化的四种简易方法

    本篇文章探讨了大数据分析之Python数据可视化的四种简易方法,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入. < 数据可视化是任何数据科学或机器学习项目的一个重要组成部分 ...

  5. python第三方库安装有哪些要求,python第三方库的四种安装方法

    讲解一下python第三方库的四种安装方法 问题场景 (我的操作系统windows): 我使用pip install selenium 发现先爆出一大段黄色警告日志,最后是两段红色的错误日志,无法成功 ...

  6. python中常用的九种预处理方法

    本文总结的是我们大家在python中常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(Standardization or Mean Removal ...

  7. Python数据可视化的四种简易方法

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 本文讲述了热图.二维密度图.蜘蛛图.树形图这四种Python数据可视化方法. 数据可视化是任何数据科学或机器学习项目的 ...

  8. Python数据可视化的四种简易方法 1

    摘要: 本文讲述了热图.二维密度图.蜘蛛图.树形图这四种Python数据可视化方法. 数据可视化是任何数据科学或机器学习项目的一个重要组成部分.人们常常会从探索数据分析(EDA)开始,来深入了解数据, ...

  9. python中数字有四种类型_python数据类型(数字Numbers)

    数字类数据类型如下四种方式:python 1.整型(int)函数 整型就是整数类型的数,同数学里的十进制数.好比表示年龄.序号等.优化 一.定义整型对象 age = 10 #type()给出参数的数据 ...

最新文章

  1. Unity 简单示例代码和向导/Unity Aplication Block
  2. linux闲话FHS标准下linux目录结构
  3. Swin Transformer对CNN的降维打击
  4. vuejs 指令封装 button 加载效果_这些Vue自定义指令,让你的项目开发爽到爆
  5. Chromium版Edge体验——几个理由告诉你为什么卸载Chrome!
  6. JavaScript:画廊案例
  7. 如何完全的卸载MySQL数据库?
  8. HEVC中四叉树划分详解
  9. powerapps简介
  10. html显示mysql图片路径_从MYSQL数据库取出微信emoji表情在web html上显示
  11. C#当中如何使用Panel控件显示其它窗体
  12. linux rsh通信实现_RSH的网络通信细节
  13. 谷歌浏览器安全证书不受信任_win7系统谷歌浏览器提示该网站的安全证书不受信任的解决方法...
  14. 苹果设备尺寸和控件尺寸
  15. 元数据管理——企业数据治理的基石
  16. 第十三届蓝桥杯大赛JavaB个人赛题题解
  17. 高等数学(第七版)同济大学 习题5-4 个人解答
  18. hiredis linux 编译,Linux系统整合hiredis
  19. 尹成学院golang学习快速笔记(1)类型
  20. 解决企业邮箱发邮箱数量上限问题

热门文章

  1. APP启动引导页的制作,用ViewPager实现翻页动画
  2. 如何为云部署安全开源代码?
  3. 由设置body线性背景色引发的问题-----当声明文档类型时,对body设置线性背景色,页面背景色无法整体线性过渡...
  4. spoj 8222 Substrings (后缀自动机)
  5. ajax请求文件下载 php,使用Ajax请求下载文件
  6. mysql 动态传入表名 存储过程_面试再问MySQL存储过程和触发器就把这篇文章给他...
  7. 【MD5】加密/解密大小写问题
  8. ORA-12519: TNS: 没有找到适用的服务处理
  9. SAP修改消息内容和报错类型(SE91和OBA5)
  10. SAP 建立WebService