浅谈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程序的执行效率的教程
Apr 02 Python
在Python中处理日期和时间的基本知识点整理汇总
May 22 Python
Python处理JSON时的值报错及编码报错的两则解决实录
Jun 26 Python
使用Python编写一个最基础的代码解释器的要点解析
Jul 12 Python
Tensorflow加载预训练模型和保存模型的实例
Jul 27 Python
python简单操作excle的方法
Sep 12 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
Oct 28 Python
Python多线程threading模块用法实例分析
May 22 Python
python tkinter canvas 显示图片的示例
Jun 13 Python
Django实现auth模块下的登录注册与注销功能
Oct 10 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
Dec 12 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
Dec 08 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制作静态网站的模板框架(四)
2006/10/09 PHP
神盾加密解密教程(三)PHP 神盾解密工具
2014/06/08 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
2016/10/17 PHP
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
2013/01/11 Javascript
Javascript算符的优先级介绍
2013/03/20 Javascript
javascript异步编程的4种方法
2014/02/19 Javascript
使用控制台破解百小度一个月只准改一次名字
2015/08/13 Javascript
jquery马赛克拼接翻转效果代码分享
2015/08/24 Javascript
jquery UI Datepicker时间控件的使用方法(加强版)
2015/11/07 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
2015/11/09 Javascript
浅谈jquery的map()和each()方法
2016/06/12 Javascript
vue插件tab选项卡使用小结
2016/10/27 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
2017/11/15 Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
2019/04/01 Javascript
微信小程序云开发之新手环境配置
2019/05/16 Javascript
webpack4 SplitChunks实现代码分隔详解
2019/05/23 Javascript
微信小程序实现蓝牙打印
2019/09/23 Javascript
简述Vue中容易被忽视的知识点
2019/12/09 Javascript
vue 百度地图(vue-baidu-map)绘制方向箭头折线实例代码详解
2020/04/28 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
[02:08:58]2014 DOTA2国际邀请赛中国区预选赛 Ne VS CIS
2014/05/22 DOTA
用matplotlib画等高线图详解
2017/12/14 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
python利用Excel读取和存储测试数据完成接口自动化教程
2020/04/30 Python
python右对齐的实例方法
2020/07/05 Python
Python filter过滤器原理及实例应用
2020/08/18 Python
python3中布局背景颜色代码分析
2020/12/01 Python
世界上最大的二手相机店:KEN
2017/05/17 全球购物
澳大利亚新奇小玩意网站:Yellow Octopus
2017/12/28 全球购物
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
学术会议主持词
2014/03/17 职场文书
2015年感恩母亲节的演讲稿
2015/03/18 职场文书
怒海潜将观后感
2015/06/11 职场文书
适合青年人白手起家的创业项目分享
2019/08/16 职场文书
使用Djongo模块在Django中使用MongoDB数据库
2021/06/20 Python
Java界面编程实现界面跳转
2022/06/16 Java/Android