pythonkeys怎么用(浅谈python的深浅拷贝以及fromkeys的用法)
pythonkeys怎么用
浅谈python的深浅拷贝以及fromkeys的用法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)#['胡辣汤', '麻辣香锅', '灌汤包', '油泼面', '葫芦娃'] |
用图来解释
|
# lst1 = ["胡辣汤","麻辣香锅","灌汤包","油泼面"] # lst2 = lst1.copy() #拷贝,抄作业,可以帮我们创建新的对象,和原来一模一样,浅拷贝 # print(id(lst1))#2232732993736 # print(id(lst2))#2232732993672 # # lst1.append("葫芦娃") # print(lst1) # print(lst2) |
用图来解释
|
# lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅", ["长白山", "白洋淀", "黄鹤楼"]] # lst2 = lst1.copy() #浅拷贝,只拷贝第一层内容 # # print(id(lst1))#1199044806792 # print(id(lst2))#1199044806984 # print(lst1) # print(lst2) # # lst1[4].append("葫芦娃") # print(lst1) # print(lst2) |
用图来解释
|
#深拷贝 需要引入一个模块 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的用法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
原文链接:https://www.cnblogs.com/a2534786642/p/10066454.html
- python编写自动发送微信信息(python实现向微信用户发送每日一句 python实现微信聊天机器人)
- python mysql配置(详解python校验SQL脚本命名规则)
- python多线程超时设置(解决python线程卡死的问题)
- 如何用python人脸识别(Python学习笔记之视频人脸检测识别实例教程)
- pythonmatplotlib条形图动画(Python Matplotlib实现三维数据的散点图绘制)
- 正则表达式在python的中的应用(Python中正则表达式的用法总结)
- python列表生成怎么用(详解python列表生成式和列表生成式器区别)
- python中创建类的方法(Python中如何导入类示例详解)
- wxpython 弹出对话框显示图片(WxPython建立批量录入框窗口)
- python爬取酷狗收费音乐(python爬取酷狗音乐排行榜)
- python pyqt 教程(Python+PyQt5实现美剧爬虫可视工具的方法)
- python语法规则讲解(计算机二级python学习教程2 python语言基本语法元素)
- nginx事件模型有几种(Python实现监控Nginx配置文件的不同并发送邮件报警功能示例)
- python字符串匹配教程(Python字符串匹配之6种方法的使用详解)
- python默认缩进设置(不归路系列:Python入门之旅-一定要注意缩进!!!推荐)
- python 自定义获取文件目录(Python使用os.listdir和os.walk获取文件路径与文件下所有目录的方法)
- 小米推出米兔儿童电话手表奥特曼版,799 元,支持微信 QQ(小米推出米兔儿童电话手表奥特曼版)
- 贾怀胤唱《白龙马》 炸场 了 没想到京剧还能这么玩(贾怀胤唱白龙马)
- 白龙马的改编学生版,快来看看(白龙马的改编学生版)
- 萌娃唱《白龙马》走红,那生动的小表情,网友直呼 简直是戏精(萌娃唱白龙马走红)
- 朱鹤松被不断认可,凤凰传奇玲花喊话岳云鹏,索要老朱演出门票(朱鹤松被不断认可)
- 元宵晚会槽点多,芒果台上来就假唱,岳云鹏不说相声改评书了(元宵晚会槽点多)
热门推荐
- SQLServer中防止并发插入重复数据的方法详解(SQLServer中防止并发插入重复数据的方法详解)
- mysql时间戳和datetime对比(MySQL时间设置注意事项的深入总结)
- python数值基本运算方法(Python常见数字运算操作实例小结)
- 选择哪个平台注册虚拟主机好(怎么选择好的便宜云虚拟主机?分享挑选便宜云虚拟主机的小技巧)
- asp.net 消息队列
- 怎么用css3画椭圆(用CSS3画一个爱心)
- php用什么解压(php解压缩zip和rar压缩包文件的方法)
- centos7rabbitmq怎么装(如何在centos上使用yum安装rabbitmq-server)
- SQL Server日期与字符串之间的转换
- 阿里云ecs部门怎么样(阿里云ecs是什么意思?)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9