数据类型的内置方法(下)
数据类型的内置方法(下)
1.列表内置方法补充
1.1 列表内容进行升序 / 降序 (sort / reverse = True)
1 l1.sort() # 默认是升序 2 l1.sort(reverse=True) # 参数指定 降序 3 print(l1) 4 l1.reverse() # 顺序颠倒 5 print(l1) 6 print(l1[1:5]) 7 print(l1[::-1]) # 冒号左右两边不写数字默认全都要 8 print(l1[:5]) # [44, 22, 11, 33, 99] 左边不写默认从头开始 9 print(l1[1:]) # [22, 11, 33, 99, 77, 88, 66] 右边不写默认到尾部 10 ll1 = [999, 111] 11 ll2 = [111, 222, 333, 444, 555, 666, 777, 888] 12 print(ll1 > ll2) # True 列表比较运算采用相同索引元素比较 只要有一个比出了结果就直接得出结论 13 s1 = 'hello world' 14 s2 = 'abc' 15 print(s1 > s2) # 字符串比较大小也是按照索引位置内部转成ASCII对应的数字比较
2.字典列表内置方法
1 dic = { 2 'name': 'jason', 3 'age': 18, 4 'hobbies': ['play game', 'basketball'] 5 } 6 1.按k取值 k不存在会直接报错 7 print(dic['name']) 8 print(dic['pwd']) 9 10 11 2.按k修改值 新增键值对(!!!!!使用频率最高!!!!!) 12 dic['name'] = 'jasonNB' # 键存在为修改值, 键不存在的话, 就是新增键值对 13 '''即使是把“name”写错了,也不会报错,就是会在后面加一个键值对''' 14 print(dic) 15 16 dic['hobbies'].append('read') 17 '''添加的键值对,必须value是个list列表格式 才可以用 append ''' 18 print(dic) 19 dic['pwd'] = 123 # 键不存在的话, 就是新增键值对 20 print(dic) 21 22 3.统计字典内部键值对的个数 23 print(len(dic)) 24 25 4.成员运算 默认只暴露k 26 print('jason' in dic) 27 print('name' in dic) 28 29 5.删除元素 30 方式1 31 del dic['name'] 32 print(dic) 33 方式2 指定k弹出键值对 给出v 34 print(dic.pop('age')) 35 print(dic) 36 方式3 弹出键值对 组织成元组的形式 第一个元素是k第二个元素是v(了解) 37 print(dic.popitem()) 38 print(dic) 39 40 6.获取v值 41 print(dic['name']) # jason 键不存在直接报错 按k取值不太推荐使用该方式 42 print(dic['xxx']) # 键不存在直接报错 按k取值不太推荐使用该方式 43 print(dic.get('name')) # jason 44 print(dic.get('xxx')) # None 键不存在 不会报错返回None 45 print(dic.get('name', '哈哈哈')) # 第二个参数 可以在k不存在的时候自定义返回信息 46 print(dic.get('xxx', '哈哈哈')) # 第二个参数 可以在k不存在的时候自定义返回信息 47 48 49 7.keys() values() items() 在python2中是列表 在python3中是迭代器(老母猪) 50 print(dic.keys()) # dict_keys(['name', 'age', 'hobbies']) 获取字典所有的键 看成列表即可 51 print(dic.values()) # dict_values(['jason', 18, ['play game', 'basketball']]) 获取字典所有的值 看成列表即可 52 print(dic.items()) # dict_items([('name', 'jason'), ('age', 18), ('hobbies', ['play game', 'basketball'])]) 53 获取字典里面所有的键值对 组织成列表套元组的形式 元组内有两个元素 第一个是k第二个是v
3.字典需要了解的方法
1 dic = { 2 'name': 'jason', 3 'age': 18, 4 'hobbies': ['play game', 'basketball'] 5 } 6 7 1.更新字典 键存在则修改 不存在则创建 8 dic.update({'name': 'jasonNB', 'pwd': 123}) 9 print(dic) 10 2.初始化字典 11 print(dict.fromkeys(['k1', 'k2', 'k3'], [])) 12 '''笔试题''' 13 res = dict.fromkeys(['k1', 'k2', 'k3'], []) 14 res['k1'].append(111) 15 res['k2'].append(222) 16 res['k3'].append(333) 17 res['k1'] = [111,222,333] 18 res['k1'].append(444) 19 print(res) 20 3.当键存在的情况下 不修改而是获取该键对应的值 21 print(dic.setdefault('name', 'jasonNB')) 22 print(dic) 23 当键不存在的情况下 新增一组键值对 并且该方法的结果是新增的值 24 print(dic.setdefault('pwd', '123')) 25 print(dic)
3.元组列表内置方法
""" 小括号括起来 内部存放多个元素 元素与元素逗号隔开 元素可以是任意数据 但是元组内元素不支持‘修改’(索引指向的元素的内存地址不能改变) 也可以简单的认为它是一个不可变的列表 """ 类型转换 能够支持for循环的数据都可以转换成元组 print(tuple(111)) print(tuple(11.11)) print(tuple('hello')) # ('h', 'e', 'l', 'l', 'o') print(tuple([11,22,33])) # (11, 22, 33) print(tuple({'name':'jason','pwd':123})) # ('name', 'pwd') t = (111, 222, 333, 444, 555) 1.索引取值 print(t[2]) print(t[-1]) 2.切片操作 print(t[1:5]) print(t[1:]) print(t[:]) 3.步长 print(t[1:5:2]) 4.统计元组内元素的个数 print(len(t)) 5.for循环 for i in t: print(i) 6.count计数 print(t.count(111))
4.元组相关笔试题
元组第一道笔试题 t1 = (111) # 整型 t2 = (11.11) # 浮点型 t3 = ('hello') # 字符串 '''元组哪怕内部只有一个元素 也需要加上逗号''' print(type((111,))) '''容器类型:内部可以存放多个值的数据类型都可以称之为容器类型 建议:所有的容器类型在存储数据的时候 如果内部只有一个元素 那么也推荐你加上逗号 ''' '''笔试题2''' t1 = (111, 222, [11, 22, 33]) t1[2].append(44) print(t1)
5.集合内置方法
1.定义空集合需要使用关键字set s1 = set() 2.类型转换 能够支持for循环的数据类型都可以转成集合(元素要是不可变类型) '''集合内元素是无序的''' 去重 s1 = {1, 2, 2, 2, 3, 4, 3, 4, 3, 1, 2, 3, 2, 1, 2, 3, 2, 1, 2, 3} print(s1) # {1, 2, 3, 4} name_list = ['kevin', 'jason', 'jason', 'jason', 'kevin', 'kevin'] 1.先将列表转换成集合 s1 = set(name_list) 2.再将去重之后的集合转换成列表 l1 = list(s1) print(l1) """课堂练习题""" ll = [33, 22, 11, 22, 11, 44, 33, 22, 55, 66, 77, 77, 66, 55, 44] 基本要求:去重即可 s1 = set(ll) ll1 = list(s1) print(ll1) 拔高要求:去重并保留原来的顺序 1.先定义一个新列表 new_list = [] 2.for循环ll列表 for i in ll: # 3.判断当前元素是否在新列表中 if i not in new_list: # 3.1 如果不在 则添加到新列表 new_list.append(i) # 3.2 如果在 则不管 print(new_list)
6.集合关系运算
"""两个群体之间做差异比较 共同好友 共同关注...""" friends1 = {"zero", "kevin", "jason", "eg"} # 用户1的好友们 friends2 = {"Jy", "ricky", "jason", "eg"} # 用户2的好友们 1.求两个用户的共同好友 print(friends1 & friends2) # {'jason', 'eg'} 2.求两个用户所有的好友 print(friends1 | friends2) # {'kevin', 'ricky', 'jason', 'zero', 'Jy', 'eg'} 3.求用户1独有的好友 print(friends1 - friends2) # {'zero', 'kevin'} 4.求用户2独有的好友 print(friends2 - friends1) # {'ricky', 'Jy'} 5.求用户1和用户2各自的好友 print(friends1 ^ friends2) # {'Jy', 'zero', 'kevin', 'ricky'} 6.父集与子集 s1 = {11, 22, 33, 44} s2 = {11, 33} print(s1 > s2) # 判断s1是否是s2的父集 True print(s2 < s1) # 判断s2是否是s1的子集 True
练习题
有一个字符串‘ababaccdd’,如何统计每个字符出现的个数并组织成字典的形式展示出来如{‘a’:3}(尝试手写代码实现)
s1 = 'jason say hello hello hello big baby baby baby sb sb jason jason' # 统计每个单词的个数 # 1.定义一个空字典 data_dict = {} # 2.如果是拿每个单词 则使用切割 new_list = s1.split(' ') # ['jason','say',...] # 3.for循环列表中每个单词 for i in new_list: # jason say hello hello ... if i in data_dict: # i=jason {} # 取出i对应的值自增1即可 data_dict[i] += 1 else: # 新增一组键值对 data_dict[i] = 1 # data_dict['jason'] = 1 {'jason':1} print(data_dict) # {'jason': 3, 'say': 1, 'hello': 3, 'big': 1, 'baby': 3, 'sb': 2} s2 = 'jasonsayhello' # 统计每个字符 data_dict = {} # 直接循环字符串 for i in s2: if i in data_dict: data_dict[i] += 1 else: data_dict[i] = 1 print(data_dict) 自己写的: # s = 'hello jason jason say hello sb sb sb' # 要求:小练习 : {'jason': 2, 'say': 1, 'sb': 3, 'hello': 2} # 第一种 dict = {} a.count('jason') dict['jason'] = a.count('jason') dict['say'] = a.count('say') dict['sb'] = a.count('sb') dict['hello'] = a.count('hello') print(dict) —————————————————————————— # 第二种 a = s.split(' ') b = {} dict = b.fromkeys(['jason', 'say', 'sb', 'hello'], []) print(dict) for i in a: dict[i] = a.count(i) print(dict)
------------恢复内容结束------------