python基础-day05-字典&列表&集合 作业Ver2.0
今日作业
字典练习
-
题目一:
1. 将列表中大于等于66的元素放入字典k1键对应的列表中 将列表中小于66的元素放入字典k2键对应的列表中 nums=[11,22,33,44,55,66,77,88,99,90] dic={ 'k1':[], 'k2':[] } -
解题思路:
-
关键点
1. 对比nums列表中的元素与数字66的关系(>= or <) 2. 对比后的元素怎么装填到dic字典内的'k1[]'、'k2[]'列表中去 -
详细思路
1. 设置变量 i 采用for循环依次将nums列表中的元素赋值给i; 2. 利用 if 判断 i 是否 >= 66,如果成立则将 i 增加到一个空白列表中(空白变量预先定义) 否则(else)就将 i 增加到另外一个空白列表中(预先定义) 3. 将新得到的两个列表分别赋值给dic字典中的 'k1[]' 和 'k2[]'
-
-
代码实现:
nums = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90] dic = {'k1': [], 'k2': [] } l1 = [] l2 = [] for i in nums: if i >= 66: l1.append(i) dic['k1'] = l1 else: l2.append(i) dic['k2'] = l2 print(dic) -
运行结果:
{'k1': [66, 77, 88, 99, 90], 'k2': [11, 22, 33, 44, 55]} -
应用到的知识点
1. 列表变量赋值 l1 = [] l2 = [] 2. 列表的循环读取 for i in nums: 3. if 的流程控制 if i >= 66: l1.append(i) dic['k1'] = l1 else: l2.append(i) dic['k2'] = l2 4. 列表的尾部追增 l1.append(i) l2.append(i) 5. 字典value值得更改 dic['k1'] = l1 dic['k2'] = l2 -
遗忘的知识点
1. append() 列表的尾部追增 -
老师的解法
nums=[11,22,33,44,55,66,77,88,99,90] dic={ 'k1':[], 'k2':[] } # 循环列表中每一个元素 for i in nums: # 判断是否大于66 if i >= 66: # res = dic['k1'] # 取k1键对应的列表 # res.append(i) # 将i追加到列表中 dic['k1'].append(i) else: # res1 = dic['k2'] # 取k2键对应的列表 # res1.append(i) # 将i追加到列表中 dic['k2'].append(i) print(dic) -
补充&提到的知识点
-
题目二:
s='hello jason jason say hello sb sb sb' 统计字符串中每个单词出现的次数 {'jason':2,...} -
解题思路:
-
关键点
1. 单词2. 统计3. 字典的生成 -
详细思路
1. 字符串到单词的形式:用字符串str的内置方法 ".split()"对原有字符串进行分割,生成新的列表形式 "new_s"2. 去除重复单词,得到核心单词(去重):用for循环和if判断出核心单词,用 ".append()"将去重后的单词依次 追增到事先定义好的空列表中"new_list"3. 统计去重后的单词在原列表中出现的次数:再用for和if去重的同时用 ".count()"统计列表中重复单词的数量并 将得到的数用 ".append()"依次追增到一个新的列表 "new_list2"中4. 核心单词列表和重复数量的列表放到字典:用len(new_list)中单词的数量并配合range 和 for 循环生成一个作 为字典Key和value的索引值,然后以 dict[key] = dict[vaule]的形式,在循环中依次放入对应的数据
-
-
代码实现:
s = 'hello jason jason say hello sb sb sb'new_s = s.split(' ')new_list = [] # 盛装去重后的单词列表new_list2 = [] # 盛装统计后的数字形成列表new_dict = {} #for i in new_s: if i not in new_list: new_list.append(i) j = new_s.count(i) new_list2.append(j)for k in range(len(new_list)): new_dict[new_list[k]] = new_list2[k]print(new_s) # 分割后的单词集(列表类型数据)print(new_list) # 去重后的单词集print(new_list2) # 单词重复的个数print(new_dict) # 最终生成的字典 -
运行结果:
['hello', 'jason', 'jason', 'say', 'hello', 'sb', 'sb', 'sb']['hello', 'jason', 'say', 'sb'][2, 2, 1, 3]{'hello': 2, 'jason': 2, 'say': 1, 'sb': 3} -
应用到的知识点
1. 字符串的分割:str变量名.split()2. 列表数据的读取:for 循环3. 列表的创建 变量名 = []4. 字典的创建 变量名 = {}5. 流程控制 if6. 成员运算 in not in7. 列表的追增 list.append()8. 字典key:value 一一对应追增9. 字典值的读取方式 -
遗忘的知识点
1. 字典的读取方式2. split() str分割 3. count() 元素计数4. append() 列表追增 -
老师的解法
s='hello jason jason say hello sb sb sb'res = s.split(' ') # ['hello', 'jason', 'jason', 'say', 'hello', 'sb', 'sb', 'sb']d1 = {}for i in res: if i not in d1: d1[i] = 1 # 先初始化 'hello':1 else: d1[i] += 1 # 在原有基础之上加一print(d1) -
其他同学的解法
-
方法一
"""郭欣雨"""s='hello jason jason say hello sb sb sb'list1 = s.split(' ')list2 = []for word1 in list1: if word1 not in list2: list2.append(word1)dict1 = {}for word2 in list2: count_num = list1.count(word2) dict1[word2] = count_numprint(dict1)方法二
"""在老师解题思路上的优化————井富贵"""s='hello jason jason say hello sb sb sb'list1 = s.split(' ')dict1 = {}for i in list1: dict1[i] = list1.count(i)print(dict1) -
-
补充&提到的知识点
# 按照空格切割字符串"""字典里面的键不能重复"""集合练习
-
题目三:
3.1 关系运算 有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合 pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'} linuxs={'wupeiqi','oldboy','gangdan'} 要求: 3.1.1 求出即报名python又报名linux课程的学员名字集合 3.1.2 求出所有报名的学生名字集合 3.1.3 求出只报名python课程的学员名字 3.1.4 求出没有同时这两门课程的学员名字集合3.2 去重并且保留原来的顺序 l = [11,22,33,22,22,33,11,22,55,66,66,77,77] 要求: 3.2.1 去重不保留顺序 3.2.2 去重并且保留顺序 -
解题思路:
-
关键点
3.1 集合中的交集、并集的处理3.2 列表元素的读取 -
详细思路
3.1 用集合的内置方法实现(& 两个集合共有元素——交集;| 两个集合所有元素——合集;- A集合独有的元素; ^ 共有元素之外的所有元素;3.2 3.2.1 列表 转 集合,集合 转 列表 3.2.2 1). for 循环 读出原有列表的元素,并追增赋值给新的列表 2). 列表类型直接转换成集合类型,集合类型直接去除重复的元素
-
-
``代码实现:
"""3.1 关系运算 """pythons = {'alex', 'egon', 'yuanhao', 'wupeiqi', 'gangdan', 'biubiu'}linuxs = {'wupeiqi', 'oldboy', 'gangdan'}print(pythons & linuxs) # & 共同 求出交集后生成新的集合print(pythons | linuxs) # | 所有 去重后得到新的集合print(pythons - linuxs) # - 单独一项 求得单选项得元素print(pythons ^ linuxs) # ^ 共有之外共有之外各自集合的元素""" 3.2.1 去重不保留顺序"""l = [11, 22, 33, 22, 22, 33, 11, 22, 55, 66, 66, 77, 77]l = set(l)l = list(l)print(l)orl = [11, 22, 33, 22, 22, 33, 11, 22, 55, 66, 66, 77, 77]print(list(set(l)))"""3.2.2 去重并且保留原来的顺序"""l = [11, 22, 33, 22, 22, 33, 11, 22, 55, 66, 66, 77, 77]new_list = []for i in l: if i not in new_list: new_list.append(i)print(new_list)new_set = set(l)print(new_set) -
运行结果:
"""3.1 关系运算"""{'wupeiqi', 'gangdan'}{'yuanhao', 'wupeiqi', 'gangdan', 'oldboy', 'egon', 'alex', 'biubiu'}{'egon', 'biubiu', 'alex', 'yuanhao'}{'alex', 'yuanhao', 'oldboy', 'egon', 'biubiu'}""" 3.2.1 去重不保留顺序"""[33, 66, 11, 77, 22, 55]"""3.2.2 去重并且保留原来的顺序"""[11, 22, 33, 55, 66, 77]{33, 66, 11, 77, 22, 55} -
应用到的知识点
1. 集合的内置方法:& | - ^2. for 循环3. 成员运算4. 集合类型转换 -
遗忘的知识点
最是秋雨悲凉,
多少落叶黄。
三十余载春秋梦,回首成过往。
静思量,向前方,莫待白头空沧桑。

浙公网安备 33010602011771号