浅谈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字典get()方法用法分析
Apr 17 Python
关于python的bottle框架跨域请求报错问题的处理方法
Mar 19 Python
python版简单工厂模式
Oct 16 Python
python的Crypto模块实现AES加密实例代码
Jan 22 Python
解决每次打开pycharm直接进入项目的问题
Oct 28 Python
python使用xlsxwriter实现有向无环图到Excel的转换
Dec 12 Python
解决安装pycharm后不能执行python脚本的问题
Jan 19 Python
pandas DataFrame索引行列的实现
Jun 04 Python
python中下标和切片的使用方法解析
Aug 27 Python
python之pymysql模块简单应用示例代码
Dec 16 Python
python3 循环读取excel文件并写入json操作
Jul 14 Python
Django操作cookie的实现
May 26 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/12/23 PHP
将数组写入txt文件 var_export
2009/04/21 PHP
解析获取优酷视频真实下载地址的PHP源代码
2013/06/26 PHP
PHP字符串中特殊符号的过滤方法介绍
2014/02/18 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
smarty的section嵌套循环用法示例
2016/05/28 PHP
javascript使用isNaN()函数判断变量是否为数字
2013/09/21 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
超级简单的jquery操作表格方法
2014/12/15 Javascript
解决JS无法调用Controller问题的方法
2015/12/31 Javascript
AngularJS入门教程之数据绑定原理详解
2016/11/02 Javascript
基于jQuery实现的打字机效果
2017/01/16 Javascript
JavaScript表单即时验证 验证不成功不能提交
2017/08/31 Javascript
基于html+css+js实现简易计算器代码实例
2020/02/28 Javascript
js实现微信聊天效果
2020/08/09 Javascript
在vue中使用回调函数,this调用无效的解决
2020/08/11 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
Python高级应用实例对比:高效计算大文件中的最长行的长度
2014/06/08 Python
基础的十进制按位运算总结与在Python中的计算示例
2016/06/28 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
2016/08/15 Python
Python读取mat文件,并转为csv文件的实例
2018/07/04 Python
使用pandas读取文件的实现
2019/07/31 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
2020/06/23 Python
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
英国在线购买轮胎、预订汽车、汽车维修和装配网站:Protyre
2020/04/12 全球购物
信息部岗位职责
2013/11/12 职场文书
大学学生会竞选演讲稿
2014/04/25 职场文书
自查自纠工作情况报告
2014/10/29 职场文书
计算机实训报告范文
2014/11/05 职场文书
个人汇报材料范文
2014/12/30 职场文书
幼儿教师年度个人总结
2015/02/05 职场文书
怀孕辞职信怎么写
2015/02/28 职场文书
加强党性修养心得体会
2016/01/21 职场文书
2016班级元旦联欢会开幕词
2016/03/04 职场文书
2019年幼儿园家长接送责任书
2019/10/29 职场文书
尝试使用Python爬取城市租房信息
2022/04/12 Python