巨蟒python全栈开发-第7天 基本数据类型补充&深浅拷贝

1.基本数据类型补充

2.深浅拷贝

DAY5-基本数据类型(基本数据类型补充&深浅拷贝)

本节主要内容:

1

(1)#1.‘‘‘#字符串是不可变的数据类型lst=[‘alex‘,‘dsb‘,‘wusir‘,‘xsb‘]#大烧饼,小烧饼s=‘_‘.join(lst) #使用前面的字符串,对后面的列表进行拼接,拼接的结果是一个字符串print(s)‘‘‘(2)‘‘‘#split() 根据你给的参数进行切割,切割的结果是列表

s=‘alex_dbs_wusir_xsb‘lst=s.split("_")   #列表print(lst)‘‘‘#需要把字符串转化成列表:split()#需要把列表转化成字符串:join()‘‘‘print("*".join(‘周润发‘))   #中间有个迭代器,用迭代的方式进行的拼接‘‘‘(3)# 2.关于删除lst=[‘篮球‘,‘足球‘,‘乒乓球‘,‘电子竞技‘,‘台球‘]

# lst.remove()   #第一种方法# print(lst)

# for el in lst:#     lst.remove(el)    #第二种方法:错误写法# print(lst)#删不干净,原因分析:删除一个,元素的索引需要重新排序,for循环向后走一个,差一个

# for i in range(len(lst)):  #0 1 2 3 4#     lst.pop(i)# print(lst)        #第三种方法:报错:pop index out of range

# for i in range(len(lst)):  #0 1 2 3 4#     lst.pop()# print(lst)        第四种方法:正确

# for i in range(len(lst)):  #0 1 2 3 4#     lst.pop(0)# print(lst)          #第五种方法:正确

## lst=[‘篮球‘,‘足球‘,‘乒乓球‘,‘电子竞技‘,‘台球‘]# #最合理的删除方式# #1.把要删除的内容写在新列表中# #2.循环这个新列表,删除老列表## #需求:删除列表中带球字的运动项目# new_lst=[]# for el in lst:#     if ‘球‘ in el:#         new_lst.append(el)   #new_lst记录要删除的内容# #要删除的列表# print(new_lst)# #循环新列表,删除老列表# for el in new_lst:      #[‘篮球‘,‘排球‘,‘足球‘,‘台球‘]#     lst.remove(el)# print(lst)

(4)#字典#字典在被循环的时候是不能删除的# dic={‘张无忌‘:‘乾坤大挪移‘,‘周芷若‘:‘哭‘,‘赵敏‘:‘闹‘}

‘‘‘s={‘杨逍‘,‘范瑶‘,‘韦一笑‘,‘谢逊‘}   #set集合for el in s:    s.remove(el)    #Set changed size during iteration‘‘‘

#集合和字典是一家人#字典:key必须是不可变的,可哈希的,不重复的#集合:元素必须是不可变的,可哈希的,不重复的#集合相当于只存了key的字典

# dic={‘韦一笑‘:‘青翼蝠王‘,‘韦一笑‘:‘张无忌‘}#后面覆盖前面的# dic[‘韦一笑‘]=‘殷天正‘   #修改# print(dic)

(5)  #面试项目经理,常考题目#坑:大坑,神坑#fromkeys()  帮助我们创建字典用的#把第一个参数进行迭代,拿到每一项作为key和后面的value组合成字典

# d=dict.fromkeys(‘张无忌‘,‘赵敏‘)#创建字典# print(d)   #{‘张‘: ‘赵敏‘, ‘无‘: ‘赵敏‘, ‘忌‘: ‘赵敏‘}## d=dict.fromkeys(‘abc‘,‘赵敏‘)#创建字典# print(d)      #{‘a‘: ‘赵敏‘, ‘b‘: ‘赵敏‘, ‘c‘: ‘赵敏‘}

#坑1:返回新字典,和原来的字典没有关系‘‘‘dic={}d=dic.fromkeys(‘风扇哥‘,‘很困‘)print(dic)   #{}print(d)      #{‘风‘: ‘很困‘, ‘扇‘: ‘很困‘, ‘哥‘: ‘很困‘}‘‘‘

#坑2:如果value是可变的数据类型#产生了三个键值对,是一个列表‘‘‘d=dict.fromkeys(‘胡辣汤‘,[])print(d)    #{‘胡‘: [], ‘辣‘: [], ‘汤‘: []}

d[‘胡‘].append(‘河南特色‘)print(d)    #{‘胡‘: [‘河南特色‘], ‘辣‘: [‘河南特色‘], ‘汤‘: [‘河南特色‘]}‘‘‘

# 练习:‘‘‘dic=dict.fromkeys([‘alex‘,‘wusir‘],[‘太白‘,‘姗姗‘])print(dic)   #{‘alex‘: [‘太白‘, ‘姗姗‘], ‘wusir‘: [‘太白‘, ‘姗姗‘]}

dic[‘alex‘].append(‘老村长‘)print(dic)          #{‘alex‘: [‘太白‘, ‘姗姗‘, ‘老村长‘], ‘wusir‘: [‘太白‘, ‘姗姗‘, ‘老村长‘]}#上边的例子说明,只要创建的键不同,但是用的值是一样的内存地址,增删都是一个操作

print(id(dic[‘alex‘]))      #2119427394952print(id(dic[‘wusir‘]))    #2119427394952‘‘‘

深浅拷贝部分
# lst=[1,3,[5,7],9]# lst1=lst# lst2=lst[:]# lst[-2].append(9)lst.append(4)# print(lst)        #[1, 3, [5, 7, 9], 9, 4]# print(lst1)       #[1, 3, [5, 7, 9], 9, 4]# print(lst2)       #[1, 3, [5, 7, 9], 9]‘‘‘

(1)#从上到下只有一个列表被创建‘‘‘lst1=[‘胡辣汤‘,‘灌汤包‘,‘油泼面‘,‘麻辣香锅‘]lst2=lst1print(id(lst1))     #2833498846728print(id(lst2))     #2833498846728

lst1.append(‘胡辣汤‘)print(lst1)         #[‘胡辣汤‘, ‘灌汤包‘, ‘油泼面‘, ‘麻辣香锅‘, ‘胡辣汤‘]print(lst2)         #[‘胡辣汤‘, ‘灌汤包‘, ‘油泼面‘, ‘麻辣香锅‘, ‘胡辣汤‘]‘‘‘

(2)#copy  等价于[:]切割‘‘‘lst1=[‘胡辣汤‘,‘灌汤包‘,‘油泼面‘,‘麻辣香锅‘]lst2=lst1.copy()        #拷贝,抄作业,可以帮我们创建新的对象

print(id(lst1))         #2459666429448print(id(lst2))         #2459666429320

lst1.append(‘胡辣汤‘)print(lst1)         #[‘胡辣汤‘, ‘灌汤包‘, ‘油泼面‘, ‘麻辣香锅‘, ‘胡辣汤‘]print(lst2)         #[‘胡辣汤‘, ‘灌汤包‘, ‘油泼面‘, ‘麻辣香锅‘]‘‘‘

‘‘‘lst1=[[1,2],‘胡辣汤‘,‘灌汤包‘,‘油泼面‘,‘麻辣香锅‘]lst2=lst1.copy()        #拷贝,抄作业,可以帮我们创建新的对象,和原来长的一模一样,浅拷贝

print(id(lst1))         #2459666429448print(id(lst2))         #2459666429320

lst1.append(‘胡辣汤‘)lst1[0].append(‘1‘)print(lst1)         #[[1, 2, ‘1‘], ‘胡辣汤‘, ‘灌汤包‘, ‘油泼面‘, ‘麻辣香锅‘, ‘胡辣汤‘]print(lst2)         #[[1, 2, ‘1‘], ‘胡辣汤‘, ‘灌汤包‘, ‘油泼面‘, ‘麻辣香锅‘]‘‘‘

(3)#引入一个模块import copylst1=[[1,2],‘胡辣汤‘,‘灌汤包‘,‘油泼面‘,‘麻辣香锅‘,[‘长白山‘,‘白洋淀‘,‘黄鹤楼‘]]lst2=copy.deepcopy(lst1)        #深拷贝,对象内部的所有内容都要复制一份,深度克隆(java中),原型模式(设计模式中)

print(id(lst1))             #1882059537224print(id(lst2))             #1882059537160

lst1[5].append(‘葫芦娃‘)print(lst1)         #[[1, 2], ‘胡辣汤‘, ‘灌汤包‘, ‘油泼面‘, ‘麻辣香锅‘, [‘长白山‘, ‘白洋淀‘, ‘黄鹤楼‘, ‘葫芦娃‘]]print(lst2)         #[[1, 2], ‘胡辣汤‘, ‘灌汤包‘, ‘油泼面‘, ‘麻辣香锅‘, [‘长白山‘, ‘白洋淀‘, ‘黄鹤楼‘]]

# 为什么要有深浅拷贝?#提供创建对象的速度#计算机中最慢的,就是创建对象,需要分配内存#最快的方式就是二进制流的形式进行赋值,速度最快(没有之一)

#做作业?  抄作业

#以后学习的各种设计模式,就是为了提高速度#clone:克隆


原文地址:https://www.cnblogs.com/studybrother/p/10067920.html

时间: 2024-10-29 19:07:58

巨蟒python全栈开发-第7天 基本数据类型补充&深浅拷贝的相关文章

巨蟒python全栈开发-第8天 文件操作

一.文件操作 今日大纲: 1.文件操作->open() open 打开 f=open(文件路径,mode='模式',encoding='编码格式') #python最最底层操作的就是bytes 打开一个文件的时候获取到的是一个文件句柄(#相当于插了一根管子) 2.mode:高频: r r+ rb w wb a了解: w+ a+ ab r+b w+b a=b 3.文件操作中关于文件句柄的相关操作 seek tell4.实际操作,文件修改(重点) DAY8-文件操作 本节主要内容: (1)r模式(2

巨蟒python全栈开发linux之cento9

1.docker入门学习 查看机器中已经启动的所有的进程. 2.docker常用命令学习 3.docker学习3 4.dockerfile与镜像 5.docker私有仓库 6.rabbitmq介绍与安装 7.rabbitmq的队列使用 8.rabbitmq的持久化队列 9.linux安装pycharm开发. 原文地址:https://www.cnblogs.com/studybrother/p/10672358.html

巨蟒python全栈开发-第12天 生成器函数 各种推导式 yield from

一.今日主要内容总览(重点) 1.生成器(目的:帮助我们创建对象) (1)生成器的本质就是迭代器 (2)一个一个的创建对象 (3)创建生成器的方式: 1.生成器函数 2.通过生成器表达式来获取生成器 3.类型转换(看不到) 2.生成器函数(重点) (1)生成器函数中包含 yield关键字,返回数据和return差不多 return会立即结束和这个函数的执行 yield 可以分段的执行一个函数 (2)大坑(五星重点): 生成器函数在执行的时候返回生成器,而不是直接执行次函数 (3)能向下执行的两个

巨蟒python全栈开发数据库前端8:jQuery框架2

1.事件 2.批量操作 3.事件冒泡 4.事件委托 1.事件 常用事件 click(function(){...}) hover(function(){...}) blur(function(){...}) focus(function(){...}) change(function(){...}) //内容发生变化,input,select等 keyup(function(){...}) mouseover 和 mouseenter的区别是:mouseover事件只要你在绑定该事件的对象上移动

巨蟒python全栈开发linux之cento8

1.复习路飞部署学习 2.mysql数据库远程访问 3.mysql主从复制 4.redis安全方式启动 5.redis数据类型 6.redis发布订阅 7.redis持久化 8.redis哨兵 9.redis哨兵搭建 10.redis集群搭建 原文地址:https://www.cnblogs.com/studybrother/p/10657663.html

巨蟒python全栈开发flask目录

预习1: 1.FlaskWeb框架: https://www.cnblogs.com/DragonFire/category/1246076.html 人工智能技术应用: https://www.cnblogs.com/DragonFire/category/1239207.html 原文地址:https://www.cnblogs.com/studybrother/p/10672384.html

巨蟒python全栈开发flask10 项目开始2

1.websocket异常处理 2.注册+登录+自动登录 3.user_info&&toy_manager 4.创建二维码 5.扫码页面低版本 6.扫描二维码&&数据校验 7.绑定玩具 8.玩具开机 9.AppWebsocket断开重练&&MuiFire调用WS事件. 原文地址:https://www.cnblogs.com/studybrother/p/10751561.html

Python全栈开发【基础三】

Python全栈开发[基础三]  本节内容: 函数(全局与局部变量) 递归 函数 一.定义和使用 函数最重要的是减少代码的重用性和增强代码可读性 1 def 函数名(参数): 2 3 ... 4 函数体 5 ... 6 返回值 函数的定义主要有如下要点: def:表示函数的关键字 函数名:函数的名称,日后根据函数名调用函数 函数体:函数中进行一系列的逻辑计算 参数:为函数体提供数据 返回值:当函数执行完毕后,可以给调用者返回数据. 总结使用函数的好处: 1.减少代码重用 2.保持一致性,易维护

Python全栈开发【第一篇】:初识Python

Python全栈开发[第一篇] 本节内容: Python 的种类 Python 的环境 Python 入门(解释器.编码.变量.input输入.if流程控制与缩进.while循环) if流程控制与while循环练习题 基本数据类型前引 Python 的种类 Cpython Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上. Jyhton Python的Java实现,Jython会将Pyth