浅谈python的深浅拷贝以及fromkeys的用法


Posted in Python onMarch 08, 2019

1.join()的用法:使用前面的字符串.对后面的列表进行拼接,拼接结果是一个字符串

# lst = ["alex","dsb",'wusir','xsb']
# s = "".join(lst)
# print(s) #alexdsbwusirxsb

2.split()  根据你给的参数进行切割,切割的结果就是列表
需要把字符串转换成列表 split
把列表转化为字符串 join

# s = "alex_dsb_wusir_xsb"
# lst = s.split("_") #列表
# print(lst)

3.join的迭代拼接

# print("*".join("周润发")) #用迭代的方式进行拼接
# #周*润*发

4.删除操作

# lst = ["篮球","排球","乒乓球","足球","电子竞技","台球"]
# for el in lst:
# lst.remove(el)
# print(lst)#['排球', '足球', '台球']

会发现删不干净 原因是:删除一个.元素的索引重新排序,for循环向后走一个,就漏掉一个
删掉了索引是0的元素,然后索引是1的元素补充到索引为0的位置上,然后索引指向1,
就漏掉了以前的索引为1的元素 因为索引为一的元素在第二次循环的时候已经掉到了索引0的位置
正确的删除操作:

#lst = ["篮球","排球","乒乓球","足球","电子竞技","台球"]
# for i in range(len(lst)): #0,1,2,3,4
# lst.pop(0)
# print(lst) #[] #永远删索引是0元素
# for i in range(len(lst)):
# lst.pop()
# print(lst) #[] #从最后一个删

最合理的删除方法:
1,先把需要删除的元素写在一个新的列表中
2.循环这个新列表,删除老列表

5.fromkeys()用法
fromkeys() 帮我们创建字典用
# 把第一个参数进行迭代 拿到的每一项作为key和后面的value组成字典

# d = dict.fromkeys("张无忌","赵敏") #创建字典
# print(d)#{'张': '赵敏', '无': '赵敏', '忌': '赵敏'}

坑 1
# 返回新字典,和原来的字典没有关系

# dic = {}
# d = dic.fromkeys("风扇哥","很困")
# print(dic)# {}
# print(d)#{'风': '很困', '扇': '很困', '哥': '很困'}

# 坑2

# 如果value是可变的数据类型,
# 那么其中一个key对应的value执行更改操作,其他的也跟着改变

d = dict.fromkeys("胡辣汤",[])
print(d)#{'胡': [], '辣': [], '汤': []}
# print(id(d["胡"]))#1797375051912
# print(id(d["辣"]))#1797375051912
# print(id(d["汤"]))#1797375051912
#说明这几个还是同一个[] 所以对其中一个进行改变别的也进行相应的改变
# d["胡"] .append("湖南特色")
# print(d)#{'胡': ['湖南特色'], '辣': ['湖南特色'], '汤': ['湖南特色']}

6.深浅拷贝
先来看一下这个问题
从上到下只有一个列表创建

# lst1 = ["胡辣汤","麻辣香锅","灌汤包","油泼面"]
# lst2 = lst1 #并没有产生新对象.只是一个指向(内存地址)的赋值
# print(id(lst1))#2253612239048
# print(id(lst2))#2253612239048
# lst1.append("葫芦娃")
# print(lst1)#['胡辣汤', '麻辣香锅', '灌汤包', '油泼面', '葫芦娃']
# print(lst2)#['胡辣汤', '麻辣香锅', '灌汤包', '油泼面', '葫芦娃']

用图来解释

浅谈python的深浅拷贝以及fromkeys的用法

# lst1 = ["胡辣汤","麻辣香锅","灌汤包","油泼面"]
# lst2 = lst1.copy() #拷贝,抄作业,可以帮我们创建新的对象,和原来一模一样,浅拷贝
# print(id(lst1))#2232732993736
# print(id(lst2))#2232732993672
#
# lst1.append("葫芦娃")
# print(lst1)
# print(lst2)

用图来解释

浅谈python的深浅拷贝以及fromkeys的用法

# lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅", ["长白山", "白洋淀", "黄鹤楼"]]
# lst2 = lst1.copy() #浅拷贝,只拷贝第一层内容
#
# print(id(lst1))#1199044806792
# print(id(lst2))#1199044806984
# print(lst1)
# print(lst2)
#
# lst1[4].append("葫芦娃")
# print(lst1)
# print(lst2)

用图来解释

浅谈python的深浅拷贝以及fromkeys的用法

#深拷贝 需要引入一个模块
import copy

lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅", ["长白山", "白洋淀", "黄鹤楼"]]
lst2 = copy.deepcopy(lst1)#深拷贝 对象内部的所有内容都要复制一份.深度克隆 原型模式
print(id(lst1))#2150506176840
print(id(lst2))#2150506178120

print(lst1)#['胡辣汤', '灌汤包', '油泼面', '麻辣香锅', ['长白山', '白洋淀', '黄鹤楼']]
print(lst2)#['胡辣汤', '灌汤包', '油泼面', '麻辣香锅', ['长白山', '白洋淀', '黄鹤楼']]
lst1[4].append("葫芦娃")
print(lst1)#['胡辣汤', '灌汤包', '油泼面', '麻辣香锅', ['长白山', '白洋淀', '黄鹤楼', '葫芦娃']]
print(lst2)#['胡辣汤', '灌汤包', '油泼面', '麻辣香锅', ['长白山', '白洋淀', '黄鹤楼']]

用图来解释

 浅谈python的深浅拷贝以及fromkeys的用法

为什么要有深浅拷贝?
提高创建速度  计算机中最慢的就是创建对象,需要分配内存各种事情
最快的方式就是以二进制流的方式进行复制 速度最快

以上所述是小编给大家介绍的python的深浅拷贝以及fromkeys的用法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python 分析Nginx访问日志并保存到MySQL数据库实例
Mar 13 Python
调试Python程序代码的几种方法总结
Apr 28 Python
用xpath获取指定标签下的所有text的实例
Jan 02 Python
使用OpenCV实现仿射变换—旋转功能
Aug 29 Python
python设置随机种子实例讲解
Sep 12 Python
Win下PyInstaller 安装和使用教程
Dec 25 Python
Python读取JSON数据操作实例解析
May 18 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
May 26 Python
python安装mysql的依赖包mysql-python操作
Jan 01 Python
学会迭代器设计模式,帮你大幅提升python性能
Jan 03 Python
Django中template for如何使用方法
Jan 31 Python
python使用PySimpleGUI设置进度条及控件使用
Jun 10 Python
Python高级特性与几种函数的讲解
Mar 08 #Python
Python I/O与进程的详细讲解
Mar 08 #Python
举例讲解Python常用模块
Mar 08 #Python
python re库的正则表达式入门学习教程
Mar 08 #Python
opencv与numpy的图像基本操作
Mar 08 #Python
Python脚本修改阿里云的访问控制列表的方法
Mar 08 #Python
python实现整数的二进制循环移位
Mar 08 #Python
You might like
php array_intersect()函数使用代码
2009/01/14 PHP
PHP常用处理静态操作类
2015/04/03 PHP
Yii2选项卡的简单使用
2017/05/26 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
2018/07/30 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
jquery form表单序列化为对象的示例代码
2014/03/05 Javascript
jquery查找tr td 示例模拟
2014/05/08 Javascript
jquery中trigger()无法触发hover事件的解决方法
2015/05/07 Javascript
JavaScript实现节点的删除与序号重建实例
2015/08/05 Javascript
Javascript实现的SHA-256加密算法完整实例
2016/02/02 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
2017/01/12 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
Vue打包后出现一些map文件的解决方法
2018/02/13 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
JointJS JavaScript流程图绘制框架解析
2019/08/15 Javascript
详解Vue.js 作用域、slot用法(单个slot、具名slot)
2019/10/15 Javascript
Element-Ui组件 NavMenu 导航菜单的具体使用
2019/10/24 Javascript
js prototype深入理解及应用实例分析
2019/11/25 Javascript
基于vue中的scoped坑点解说
2020/09/04 Javascript
[59:08]Ti4 冒泡赛第二天 NEWBEE vs Titan 2
2014/07/15 DOTA
python使用Image处理图片常用技巧分析
2015/06/01 Python
Python实现大文件排序的方法
2015/07/10 Python
Python学习笔记之解析json的方法分析
2017/04/21 Python
python for循环输入一个矩阵的实例
2018/11/14 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
瑰珀翠美国官网:Crabtree & Evelyn美国
2016/11/29 全球购物
捷克街头、运动和滑板一站式商店:BoardStar.cz
2019/10/06 全球购物
工程造价与财务管理专业应届生求职信
2013/10/06 职场文书
大学生四年生活自我鉴定
2013/11/21 职场文书
现场施工员岗位职责
2014/03/10 职场文书
财务管理专业毕业生求职信
2014/06/02 职场文书
医院保洁服务方案
2014/06/11 职场文书
我爱我班主题班会
2015/08/13 职场文书
电子表的操作介绍说明书
2019/10/28 职场文书
sql字段解析器的实现示例
2021/06/23 SQL Server
5种 JavaScript 方式实现数组扁平化
2021/10/05 Javascript