【主要内容】
1. 补充基础数据类型的相关知识点
1. str. join() 把列表变成字符串
2. 列表不能再循环的时候删除. 因为索引会跟着改变
3. 字典也不能直接循环删除.
把要删除的内容记录在列表中. 循环列表. 删除原列表, 字典中的数据
4. fromkeys() 不会对原来的字典产生影响. 产生新字典(神坑, 考试)
5. set集合. 不重复, 无序.
6. 想转换成什么.就用什么括起来
7. 深浅拷贝
1. 直接赋值. 两个变量指向同一个对象.
2. 浅拷贝:只拷贝第一层内容. copy()
3. 深度拷贝: 对象中的所有内容都会被拷贝一份
import copy
copy.deepcopy()
【代码】
1、list删除
1 # lst = ["我不是药神", "西游记", "西红柿首富", "天龙八部"] 2 # 3 # # lst.clear() 4 # # list在循环的时候不能删. 因为会改变索引 5 # del_lst = [] 6 # for el in lst: 7 # del_lst.append(el) # 记录下来要删除的内容 8 # 9 # for el in del_lst: # 循环记录的内容 10 # lst.remove(el) # 删除原来的内容 11 # print(lst) 12 13 # lst = ["周杰伦", "周润发", "周星星", "马化腾", "周树人"] 14 # 删除掉姓周的人的信息 15 # del_lst = [] 16 # for el in lst: 17 # if el.startswith("周"): 18 # del_lst.append(el) 19 # 20 # for el in del_lst: 21 # lst.remove(el) 22 # print(lst) 23 24 # 字典也不能在循环的时候更改大小 25 # dic = {"a":"123", "b":"456"} 26 # for k in dic: 27 # dic.setdefault("c", "123") 28 29 # a = dict.fromkeys(["jj", 'jay', 'taibai'], "sb") # 静态方法 30 31 32 # dic = {"a":"123"} 33 # s = dic.fromkeys("王健林", "思聪" ) # 返回给你一个新字典 34 # print(s)
2、set集合
1 # s = set() # 空集合 2 # dic = dict() 3 # s = str() 4 # i = int() 5 # lst = list() 6 # print(i) 7 8 # s = {"王者荣耀", "英雄联盟", "王者荣耀", 123, True, True} 9 # print(s) 10 # s = {123, {1,2,3}} # 不合法 11 # print(s) 12 13 # lst = ["张强", "李强", "王磊", "刘伟", "张伟", "张伟", "刘洋", "刘洋"] 14 # s = set(lst) # 去重复 15 # print(s) 16 # 17 # # 变回来 18 # lst = list(s) 19 # print(lst)
3、深浅拷贝
1 # lst1 = ["金毛狮王", "紫衫龙王", "白眉鹰王", "青衣服往"] 2 # lst2 = lst1 # 列表, 进行赋值操作. 实际上是引用内存地址的赋值. 内存中此时只有一个列表. 两个变量指向一个列表 3 # 4 # lst2.append("杨做事") # 对期中的一个进行操作. 两个都跟着变 5 # print(lst2) 6 # print(lst1) 7 8 9 # 浅拷贝 copy 创建新对象 10 # lst1 = ["赵本山", "刘能", "赵四"] 11 # # lst2 = lst1.copy() # lst2 和lst1 不是一个对象了 12 # lst2 = lst1[:] # 切片会产生新的对象 13 # lst1.append("谢大脚") 14 # print(lst1, lst2) 15 # # print(id(lst1), id(lst2)) 16 17 18 # lst1 = ["超人", "七龙珠", "葫芦娃", "山中小猎人", ["金城武", "王力宏", "渣渣辉"]] 19 # lst2 = lst1.copy() # 拷贝. 浅拷贝 拷贝第一层 20 # 21 # lst1[4].append("大阳哥") 22 # 23 # print(lst1, lst2) 24 # 深拷贝 25 26 import copy 27 lst1 = ["超人", "七龙珠", "葫芦娃", "山中小猎人", ["金城武", "王力宏", "渣渣辉"]] 28 lst2 = copy.deepcopy(lst1) # 把lst1扔进去进行深度拷贝 , 包括内部的所有内容进行拷贝 29 lst1[4].append("大阳哥") 30 print(lst1, lst2) 31 32 # 为什么要有深浅拷贝 33 # 拷贝比创建对象的过程要快
4、作业与练习
1 #******************上次作业***************** 2 ''' 3 #1、评委打分,要求在5——10之间 4 i=1 5 while i<11: 6 fen=input("请评委%d打分:" % i) 7 if int(fen)>5 and int(fen)<10: 8 print("OK的分数") 9 else: 10 print("不在范围的打分") 11 continue 12 i = i+ 1 13 14 #2、 15 lst=["斤瓶酶","解救吾先生","美国往事","西西里的美丽传说"] 16 dic={} 17 for el in lst: 18 fen=input("请给%s电影进行打分:" % el) 19 dic[el]=int(fen) 20 print(dic) 21 22 #3、读数 23 dic={ 24 "-":"负", 25 "1":"yi", 26 "2":"er", 27 "3":"san", 28 "4":"si", 29 "5":"wu", 30 "6":"liu", 31 "7":"qi", 32 "8":"ba", 33 "9":"jiu", 34 "0":"ling", 35 ".":"dian" 36 } 37 content=input("请输入一个数:") 38 for c in content: 39 print(dic[c],end=" ") 40 else: 41 print() 42 print("你好啊") 43 44 #4、求取主播的工资平均值并干掉低于平均值的主播 45 zhubo={"卢本伟":99999,"冯提莫":140000,"陈一发儿":150000,"金老板":5000} 46 sum=0 47 for value in zhubo.values(): 48 sum=sum+value 49 print(sum/len(zhubo)) 50 51 avg=sum/len(zhubo) 52 lst=[] 53 # 不允许在循环中删除字典中的key 54 for k,v in zhubo.items():#循环记录要删除的key 55 if v < avg: 56 lst.append(k)#列表保存要删除的key 57 for el in lst: 58 zhubo.pop(el) 59 print(zhubo) 60 61 62 #**********************今天练习*********************** 63 #循环删除列表里的元素 64 lst=["我不是药神","西游记","西红柿首富","天龙八部"] 65 del_list=[] #建立一个要删除的元素空列表 66 # list在循环的时候不能删,因为会改变索引 67 for el in lst: 68 del_list.append(el) #记录下要删除的内容 69 for el in del_list: #循环记录内容 70 lst.remove(el) #删除原来的内容 71 print(lst) 72 73 lst=["周树人","周润发","周杰伦","周星星","马化腾","周大大"] 74 del_list=[] 75 for el in lst: 76 if "周"in el: 77 del_list.append(el) 78 else: 79 pass 80 for el in del_list: 81 lst.remove(el) 82 print(lst) 83 '''