浅谈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私有属性和方法实例分析
Jan 15 Python
Python发送form-data请求及拼接form-data内容的方法
Mar 05 Python
Python中标准库OS的常用方法总结大全
Jul 19 Python
使用Python的turtle模块画图的方法
Nov 15 Python
PyQt5每天必学之组合框
Apr 20 Python
pycharm远程linux开发和调试代码的方法
Jul 17 Python
Pytorch 实现数据集自定义读取
Jan 18 Python
python 解决print数组/矩阵无法完整输出的问题
Feb 19 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
Apr 07 Python
python实现发送带附件的邮件代码分享
Sep 22 Python
Python实现七个基本算法的实例代码
Oct 08 Python
Pyhton模块和包相关知识总结
May 12 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实现汉字验证码和算式验证码的方法
2015/03/07 PHP
prototype1.4中文手册
2006/09/22 Javascript
Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
2010/09/12 Javascript
JQuery入门—JQuery程序的代码风格详细介绍
2013/01/03 Javascript
实现点击列表弹出列表索引的两种方式
2013/03/08 Javascript
jquery的map与get方法详解
2013/11/04 Javascript
原生Js实现简易烟花爆炸效果的方法
2015/03/20 Javascript
快速解决js中window.location.href不工作的问题
2016/11/02 Javascript
使用node.js中的Buffer类处理二进制数据的方法
2016/11/26 Javascript
bootstrap fileinput实现文件上传功能
2017/08/23 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
深入浅析Node环境和浏览器的区别
2018/08/14 Javascript
详解JS中统计函数执行次数与执行时间
2018/09/04 Javascript
微信小程序通过一个json实现分享朋友圈图片
2019/09/03 Javascript
Django框架中的对象列表视图使用示例
2015/07/21 Python
Python的re模块正则表达式操作
2016/05/25 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
2019/07/04 Python
pandas-resample按时间聚合实例
2019/12/27 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
2020/02/17 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
2020/03/06 Python
python使用梯度下降算法实现一个多线性回归
2020/03/24 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
2020/04/12 Python
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
全球摩托车装备领导者:RevZilla
2017/09/04 全球购物
Tommy Hilfiger澳洲官网:美国高端休闲领导品牌
2020/12/16 全球购物
J2EE的优越性主要表现在哪些方面
2016/03/28 面试题
酒店节能降耗方案
2014/05/08 职场文书
工厂标语大全
2014/10/06 职场文书
社区党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
财务出纳岗位职责
2015/03/31 职场文书
2015年档案室工作总结
2015/05/23 职场文书
面试必问:圣杯布局和双飞翼布局的区别
2021/05/13 HTML / CSS
详解非极大值抑制算法之Python实现
2021/06/28 Python
浅谈 JavaScript 沙箱Sandbox
2021/11/02 Javascript
收音机爱好者玩机13年,简评其使用过的19台收音机
2022/04/30 无线电