浅谈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中用max()方法求最大值的介绍
May 15 Python
python 实现在txt指定行追加文本的方法
Apr 29 Python
numpy判断数值类型、过滤出数值型数据的方法
Jun 09 Python
linux安装Python3.4.2的操作方法
Sep 28 Python
python 用下标截取字符串的实例
Dec 25 Python
django获取from表单multiple-select的value和id的方法
Jul 19 Python
python创建与遍历List二维列表的方法
Aug 16 Python
python NumPy ndarray二维数组 按照行列求平均实例
Nov 26 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
Feb 27 Python
python的json包位置及用法总结
Jun 21 Python
Python列表推导式实现代码实例
Sep 09 Python
Python实现制作销售数据可视化看板详解
Nov 27 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
常用星际术语索引(新手指南)
2020/03/04 星际争霸
选择PHP作为网站开发语言的原因分享
2012/01/03 PHP
解析yii数据库的增删查改
2013/06/20 PHP
浅析php中三个等号(===)和两个等号(==)的区别
2013/08/06 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
2014/05/04 PHP
php常用hash加密函数
2014/11/22 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
2016/12/02 PHP
php往mysql中批量插入数据实例教程
2018/12/12 PHP
微信推送功能实现方式图文详解
2019/07/12 PHP
js判断客户端是iOS还是Android等移动终端的方法
2013/12/11 Javascript
jquery中load方法的用法及注意事项说明
2014/02/22 Javascript
Javascript中的getUTCDay()方法使用详解
2015/06/10 Javascript
JavaScript运动减速效果实例分析
2015/08/04 Javascript
jquery判断密码强度的验证代码
2020/04/22 Javascript
Angularjs全局变量被作用域监听的正确姿势
2016/02/06 Javascript
通用无限极下拉菜单的实现代码
2016/05/31 Javascript
bootstrap导航栏、下拉菜单、表单的简单应用实例解析
2017/01/06 Javascript
配置nodejs环境的方法
2017/05/13 NodeJs
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
jQuery实现标签子元素的添加和赋值方法
2018/02/24 jQuery
vue移动端实现红包雨效果
2020/06/23 Javascript
vue权限管理系统的实现代码
2019/01/17 Javascript
vue-week-picker实现支持按周切换的日历
2019/06/26 Javascript
es6函数name属性功能与用法实例分析
2020/04/18 Javascript
vue组件是如何解析及渲染的?
2021/01/13 Vue.js
[46:09]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第三场
2014/05/26 DOTA
Python3.6简单操作Mysql数据库
2017/09/12 Python
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
Win10下Python3.7.3安装教程图解
2019/07/08 Python
django执行数据库查询之后实现返回的结果集转json
2020/03/31 Python
10个示例带你掌握python中的元组
2020/11/23 Python
SAZAC的动物连体衣和动物睡衣:Kigurumi Shop
2020/03/14 全球购物
跳蚤市场口号
2014/06/13 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
优秀少先队员事迹材料
2014/12/24 职场文书
瘦西湖导游词
2015/02/03 职场文书