day6 —— 学习总结
列表推导式
-
序列变换成列表(统一变换)
nums = [10, 12, 13, 14] list1 = [x*100 for x in nums] list2 = [x % 10 for x in nums]
-
筛选(提取出有效的或者删除无效的)
scores = [50, 60, 70, 80, 90] new_scores = [x for x in scores if x >= 60] print(new_scores)
-
不统一的变换: 三步运算符
list3 = [19, 'abc', 20, 'mnb', 10] new_list3 = [x*10 if type(x) == int else x for x in list3] print(new_list3)
课表的加法和乘法
- 列表1 + 列表2 —— 合并两个列表产生新的列表
- 列表*N —— 列表中的元素重复N次产生一个新的列表
比较运算
- 比较相等: == != —— 顺序、大小、个数都相等
- 两个不同类型的数据可以判断是否相等,只是结果一定是False
- is 的用法:判断两个数据在内存空间的地址是否一样
结论
-
用数据给变量赋值时,如果数据时不可变的,那么复用前面存储的值
如果数据是可变的,不管之前有没有存储过,都会重新开辟新的内存空间
# 数据——不可变 a = 100 b = 100 # 列表——可变 c = [10, 20] d = [10, 20] # 元组——不可变 e = (10, 20) f = (10, 20) # 字典——可变 x = {'a':10} y = {'b':10}
-
id(变量): 获取变量中保存的数据在内存空间的地址
-
用一个变量给另一个变量赋值时,其实是让新的变量保存原变量数据的地址,不会开辟新的空间保存数据
-
python中所有的变量都是指针变量
变量在保存数据的时候其实保存的是数据内存中存储的地址
列表相关函数和方法
-
相关函数: max min sum sorted len list
-
max 和 min
max(序列) —— 返回序列中的最大值
min(序列)—— 返回序列中的最小值
-
sum
sum(序列)—— 求序列中所有元素的和(序列中的元素只能是数字)
-
sorted
sorted(列表)—— 将序列中的元素从小到大排序(升序),以列表的形式返回
sorted(列表, reverse = True)—— 将序列中的元素从大到小排序(降序),以列表的形式返回
-
list
list(序列) —— 将其他序列转换成列表(任何序列都可以转化成列表)
-
-
相关方法: 列表.xxx()
-
列表.clear()—— 删除列表中所有元素
-
列表.copy()—— 返回一个和原列表一样的新列表
-
列表.count(元素)—— 返回元素在列表中出现的次数
-
列表…extend(列表)—— 将序列中的元素全部添加到列表中
-
列表.index(元素)—— 返回元素在列表中的下标(0开始的下标)
如果元素有多个只返回最前面元素的下标,如果元素不存在,报错
-
列表.reverse()—— 列表逆序(改变原列表)
-
列表.sort()——升序排序,改变原列表
列表.sort(reverse=True)—— 降序
-
字典
-
字典是容器类数据类型,将{}作为容器的标志
-
里面多个元素(键值对)用 , 隔开:{键1:值1, 键2:值2,…}
-
注意:字典保存数据,其实想保存的是值,键的作用是对值进行区分和说明
-
字典可变(支持增删改): 字典是无序的(不支持下标操作)
-
字典元素—— 必须是键值对
键—— 必须是不可变的数据(一般使用字符串)、 唯一的
值—— 任何类型的数据,可以重复
查
-
获取单个值
- 字典[key]—— 获取字典中指定key对应的值,如果key不存在会报错
- 字典.get(key)—— 获取字典中指定key对应的值,如果key不存在不报错并且返回None
- 字典.get(key, 默认值)—— key不存在是返回默认值
-
遍历
for - in遍历字典的时候,变量取到的是字典的键
# 练习:定义一个变量保存一个班所有的学生信息,每个学生中包含姓名、年龄、性别、电话号码 students = [ {'name': 'stu1', 'age': 18, 'gender': '男', 'tel': '1101'}, {'name': 'stu2', 'age': 22, 'gender': '女', 'tel': '1104'}, {'name': 'stu3', 'age': 30, 'gender': '女', 'tel': '1102'}, {'name': 'stu4', 'age': 23, 'gender': '男', 'tel': '1106'}, {'name': 'stu5', 'age': 24, 'gender': '男', 'tel': '1109'}, {'name': 'stu6', 'age': 16, 'gender': '女', 'tel': '1100'} ] # 1)计算这个这个班的学生的平均年龄 ages = 0 for stu in students: ages += stu['age'] print(stu['age']) print('平均年龄:', ages/len(students)) ave_age = sum([x['age'] for x in students])/len(students) print(ave_age) # 2)统计班级中女生的个数 count = 0 for stu in students: if stu['gender'] == '女': count += 1 print('女生的人数:', count) result = [x['gender'] for x in students].count('女') print(result)
增、改
字典[key] = 值—— 当key存在时就是修改,key不存在时就是增加
删
del 字典[key] —— 删除字典中指定key对应的键值对;当key不存在—— 报错
字典.pop(key)—— 取出字典中指定key对应的值
字典相关操作
-
in 和 not in
字典的in 和 not in 判断的是某个key是否存在
-
max min sorted sum ——针对的是字典的可以
-
dict
dict(序列) —— 将序列转化为字典
要求:
- 序列中的每个元素都是序列
- 小序列中必须有且仅有两个元素
- 小序列的第一个元素不可变
-
字典转列表—— 将字典所有的键作为列表元素