5.8 自我总结
1. 列表类型内置算法
1. 必须掌握
1. 按索引取值 (正向取值 + 反向取值), 即可存也可以取
- # 用于取其中一个值
- name = ['yang','wen','yi']
- ## 正方向取 wen, 也就是从左到右
- pritn(name[1])
- ## 正方向取 wen, 也就是从右到左
- print(name[-2])
2. 切片
- # 用于取多个值
- name = ['yang','wen','yi']
- # 取其中的 yang wen
- print(name[0:2]) #和字符串类似顾头不顾尾
- print(name[0:-1])
- print(name[-3:-1])
- print(name[:2]) #这两个是上面基础上精简的
- print(name[:-1])
3. 长度 len
- # 用于长度 3
- name = ['yang','wen','yi']
- print(len(name))
4. 成员运算 in 和 not in
- # 用于判断有误值在里面
- name = ['yang','wen','yi']
- print('wennnn' in name) #False
- print('wen' in name) #True
5. 追加 append
- # 只加在最后
- name = ['yang','wen','yi']
- print(name.append(22)) #None
- print(name) #['yang', 'wen', 'yi', 222]
6. 删除 del
- name = ['yang','wen','yi']
- # 删除 wen
- del name[1]
7. 循环
- name = ['yang','wen','yi']
- for i in name:
- print(i)
- #yang
- #wen
- #yi
2. 了解
- 1.insert
- name_list = ['nick', 'jason', 'tank', 'sean']
- name_list.insert(1, 'handsome') #加入后那个值的位置, 加入的值
- print(f"name_list: {name_list}")
- 2.pop
- # list 之 pop(),pop() 默认删除最后一个元素, 删除一个元素
- name_list = ['nick', 'jason', 'tank', 'sean']
- print(f"name_list.pop(1): {name_list.pop(1)}") #会显示删除的值
- print(f"name_list: {name_list}")
- 3.remove
- # list 之 remove() 删除一个元素
- name_list = ['nick', 'jason', 'tank', 'sean']
- print(f"name_list.remove('nick'): {name_list.remove('nick')}") #会输出 None
- 4.count
- # list 之 count() #x 显示对于值的个数
- name_list = ['nick', 'jason', 'tank', 'sean']
- print(f"name_list.count('nick'): {name_list.count('nick')}")
- 5.index
查找索引
6.clear
删除列表元素
- 7.copy
- name_list = ['nick', 'jason', 'tank', 'sean']
- print(f"name_list.copy(): {name_list.copy()}")
- 8.extend
- # list 之 extend()
- name_list = ['nick', 'jason', 'tank', 'sean']
- name_list2 = ['nick handsome']
- name_list.extend(name_list2)
- print(f"name_list: {name_list}")
- #name_list: ['nick', 'jason', 'tank', 'sean', 'nick handsome'] 在末尾加入
- 9.reverse
- # list 之 reverse()
- name_list = ['nick', 'jason', 'tank', 'sean']
- name_list.reverse()
- print(f"name_list: {name_list}")
- # name_list: ['sean', 'tank', 'jason', 'nick'] 翻转
- 10.sort
- # list 之 sort(), 使用 sort 列表的元素必须是同类型的
- name_list = ['nick', 'jason', 'tank', 'sean']
- name_list.sort()
- print(f"name_list: {name_list}")
- #name_list: ['jason', 'nick', 'sean', 'tank'] #升序
- name_list.sort(reverse=True)
- print(f"name_list_reverse: {name_list}")
- #name_list_reverse: ['tank', 'sean', 'nick', 'jason'] #降序
3, 一个值或者多个值
多个值
4. 有序或者无序
有序
5. 可变或者不可变
可变
2. 元祖类型
1. 定义
(), 中间加元素用, 隔开
2. 用法
(与列表相似, 区别是可以读取不可存储改变, 列表中关于存储或者改名元素的内容内置函数元祖不行)
索引取值
切片 (顾头不顾尾, 步长)
长度 len
成员运算 in 和 not in
循环
count
index
3. 一个值或者多个值
多个值
4. 有序或者无序
有序
5. 可变或者不可变
不可变
3. 字典数据类型内置算法
1. 必须掌握
1. 按 key 存取值: 可存可取
- dict = {
- 'name':'yang','age':18
- }
- # 取 姓名
- dict[name]
2. 长度 len
- dict = {
- 'name':'yang','age':18
- }
- # 取 长度
- len(dict)
3. 成员运算 in 和 not in
判断有无 key 而不是值
4. 删除 del
- dict = {
- 'name':'yang','age':18
- }
- # 删除名字
- dal dict[name]
5. 键 keys(), 值 values(), 键值对 items()
- # 演示即可
- dict = {
- 'name':'yang','age':18
- }
- print(dict.keys())
- print(dict.values())
- print(dict.items())
- '''dict_keys(['name','age'])
- dict_values(['yang', 18])
- dict_items([('name', 'yang'), ('age', 18)])
- '''
6. 循环
- dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
- for k, v in dic.items(): # items 可以换成 keys(),values()
- print(k, v)
- #a 1
- #b 2
- #c 3
- #d 4
2. 慢慢掌握
1.get
和 key 取值有点类似区别就是取不到不会报错, 但是不能用 get 来更换值
- 2.update
- # dic 之 update()
- dic1 = {
- 'a': 1, 'b': 2
- }
- dic2 = {
- 'c': 3
- }# 如果 dic2 与 dic1 中 key 有相同的, 则不会增加新的 key 更新值, 如果没有相同的则会添加 key 还有值
- dic1.update(dic2)
- print(f"dic1: {dic1}")
- #dic1: {
- 'a': 1, 'b': 2, 'c': 3
- }
- 3.fromkeys
- # dic 之 fromkeys()
- dic = dict.fromkeys(['name', 'age', 'sex'], None)
- print(f"dic: {dic}")
- # 给目录赋予相同的值
- 4.setdefault
- # dic 之 setdefault(), 有指定 key 不会改变值; 无指定 key 则改变值
- dic = {
- 'a': 1, 'b': 2
- }
- print(f"dic.setdefault('a'): {dic.setdefault('a',3)}")
- print(f"dic: {dic}")
- print(f"dic.setdefault('c'): {dic.setdefault('c',3)}")
- print(f"dic: {dic}")
- #dic.setdefault('a'): 1
- #dic: {
- 'a': 1, 'b': 2
- }
- #dic.setdefault('c'): 3
- #dic: {
- 'a': 1, 'b': 2, 'c': 3
- }
4. 需要记的单词
get 获得
update 更新
fromkeys 生成一个字典, 修改和添加
setdefault 只添加不修改
count 查找个数
index 查找索引
insert 具体某个位置插入
pop 删除 能显示删除的值
remove 删除 不能显示删除的值
clear 清除元素
copy 复制
extend 延伸
reverse 颠倒
sort 排序
5. 今日题目
有列表 data=['alex',49,[1900,3,18]], 分别取出列表中的名字, 年龄, 出生的年, 月, 日赋值给不同的变量:
- data=['alex',49,[1900,3,18]]
- name,age,data_1 = data
- year,month,day = data_1
- print(name,age,year,month,day)
- #####################
- data=['alex',49,[1900,3,18]]
- a,b,c = data
- d,e,f = c
- data = [a,b,d,e,f]
- keys = ['姓名','年龄','年','月','日']
- dic= {}
- time = 0
- while time <len(data):
- dic.setdefault(keys[time],data[time])
- time += 1
- print(dic)
用列表模拟队列 (最先进入列表的元素会先出来):
- # 答案, 通过该答案模仿写出第 3 题
- lis = []
- print(f"进队列前 lis: {lis}")
- # 进队列
- for i in range(1, 6):
- lis.append(i)
- print(i)
- print(f"结束进入队列 lis: {lis}")
- # 出队列
- for i in range(len(lis)):
- print(lis.pop(0))
- print(f"出队列后 lis: {lis}")
用列表模拟堆栈 (最后进入列表的元素会先出来):
- new_lis = []
- for i in range(1,6):
- new_lis.append(i)
- new_lis.reverse()
- print(new_lis)
有如下列表, 请按照年龄排序 (涉及到匿名函数):
- lis=[
- {'name':'alex','age':84},
- {'name':'oldboy','age':73},
- {'name':'egon','age':18},
- ]
- # 通过姓名排序参考 (涉及匿名函数):
- lis.sort(key=lambda item:item['name'])
- lis.sort(key=lambda item:item['age'])
有如下值集合 [11,22,33,44,55,66,77,88,99,90...], 将所有大于 66 的值保存至字典的第一个 key 中, 将
小于 66 的值保存至第二个 key 的值中, 结果为 {'k1': 大于 66 的所有值, 'k2': 小于 66 的所有值}:
- k1_list = []
- k2_list = []
- new_dict = {'k1':k1_list,"k2":k2_list}
- a = [11,22,33,44,55,66,77,88,99,90]
- for i in a:
- if i>=66:
- k1_list.append(i)
- elif i < 66:
- k2_list.append(i)
- print(new_dict)
统计 s='hello jason tank tank jason sean say hello dsb dsb sb'中每个单词的个数, 结果为 `{'hello': 2, 'alex': 0, 'say': 1, 'sb': 1}
- s='hello jason tank tank jason sean say hello dsb dsb sb'
- hello_num = s.count('hello')
- alex_num = s.count('alex')
- sb_num = s.split().count('sb')
- say_num = s.count('say')
- new_dic = {
- 'hello':hello_num,'alex':alex_num,'say':say_num,'sb':sb_num
- }
- print(new_dic)
- #{
- 'hello': 2, 'alex': 0, 'say': 1, 'sb': 1
- }
来源: http://www.bubuko.com/infodetail-3051691.html