python学习 day8
## 01 元组
-
什么是元组(tuple)
元组就是不可变的列表
元组也是容器型数据类型,将()作为容器的标志,多个元素之间用逗号隔开
元组不可变(不支持增删改);元组是有序的(支持下标操作)
元组中的元素的要求和列表一样
- 空元组:()
- 单个元素的元组:(元素,)
- 多个元素的元组:
- 变量 = (元素1, 元素2, 元素3,……)
- 变量 = 元素1, 元素2, 元素3,……
-
获取元组中的元素
列表获取元素的方式元组都支持
-
其他方式
-
变量1, 变量2, 变量3, …… = 元组
注意:这儿的变量的个数要和元组中的元素的个数一样
tuple6 = (10, 78, 45) x, y, z = tuple6 print(x,y,z)
-
变量1, 变量2, 变量3, …… = 元组
前面的变量的个数小于元组中元组的个数,并且有且只有一个变量前有*
a, b, *c, d, e = 1, 2, 3, 4, 5, 6, 7, 8, 9 print(a, b) print(d, e) print(c) #[3, 4, 5, 6, 7] #补充: *的解包功能 list = [10, 2, 5] print(*list)
-
列表相关操作全部适用于元素
02 字典基础
-
什么时候使用字典
需要同时保存多个数据,多个数据的意义不同(需要做区分)
-
什么是字典(dict)
字典是容器型数据类型,将{}作为容器的标志,多个元素用逗号隔开(字典的元素都是键值对):{键1:值1, 键2:值2, 键3:值3,……}
字典是可变的(支持增删改);字典是无序(不支持下标操作)
字典中的元素:键值对
键 - 不可变;唯一
值 - 任何类型的数据,可以重复
字典在保存数据的时候,真正想要保存的是值,键是用来对值进行区分
```
dict1 = {}
dict2 = {'a': 10, 'b':8, 'abc': 40}
print(dict2)
``` -
获取字典的值
-
获取单个元素对应的值
- 字典[key] - 获取字典中指定 key 对应的值
dog = {'name': '财财', 'age': 3, 'breed': '土狗', 'gender': '母', 'weight': 10} print(dog['name']) print(dog['gender']) print(dog['height']) # 报错
字典.get(key) - 获取字典中指定 key 对应的值
-
字典.get(key, 默认值) - 获取字典中指定 key 对应得值(如果 key 不存在,返回默认值)
print(dog.get('breed')) print(dog.get('height')) # None print(dog.get('age', 0)) print(dog.get('height', 40))
-
遍历
-
for 变量 in 字典:
循环体
注意:变量取到得是字典中所有的key
dog = {'name': '财财', 'age': 3, 'breed': '土狗', 'gender': '母', 'weight': 10} for x in dog: print(x, dog[x])
-
for 变量 in 字典.values():
循环体
变量取到的是字典所有的值
-
for 变量1, 变量2 in 字典.items():
循环体
变量1能取到字典所有的key, 变量2取到的是字典所有的值
练习1;声明一个变量同时保存4个学生的信息(每个学生需要包含:姓名、年龄、电话、成绩)
练习2:统计上面4个学生中未成年人的个数
stu = {'name': '张三', 'age'}
-
-
03 字典元素的增删改
-
增 / 改
语法1:
字典[key] = 值
如果 key 存在,就将 key 对应的值修改成指定的值(改)
如果 key 存在,以 ' key : 值'的形式添加一个键值对(增)
语法2:
字典.setdefault(键,值) - 添加键值对,不会修改
-
删
-
del
del 字典[key] - 删除指定key对应的键值对(key 不存在会报错)
-
pop
字典.pop(key) - 取出字典中指定key对应的值,并且返回被取出的值
-
04 字典相关操作和方法
-
字典相关操作
字典不支持加法和乘法运算
-
比较运算
字典只支持比较相等,不支持比较大小
-
in 和 not in
数据 in 字典 - 判断字典中是否存在指定的key
数据 not in 字典 - 判断字典中是否不存在指定的key
-
相关函数
len(字典) - 统计字典中键值对的个数
-
dict(数据) - 将自定的数据转换成字典
数据的要求:1.是容器型数据类型 2.数据中元素是有且只有两个元素的小容器 3.小容器中的第一个元素是不可变的
-
字典转换成其他的数据类型
bool(字典) - 空字典会转换成False,其他都是True
list(字典) - 将字典所有的key作为列表的元素
tuple(字典) - 将字典所有的key作为列表的元组
-
-
相关方法
- 字典.clear() - 清空字典
- 字典.copy() - 复制字典产生一个新的字典并且返回
- dict.fromkeys(序列) - 创建一个新的字典,字典的key是序列中的元素,值是None
- dict,fromkeys(序列, 数据) - 创建一个新的字典,字典的key是序列中的元素,值是数据
- 字典.keys() - 获取字典所有的key,返回一个容器(这个容器不是列表)
- 字典.values() - 获取字典所有的值,返回一个容器(这个容器不是列表)
- 字典.items() - 获取字典所有的键值对,返回一个容器,容器的元素是元组,每个元组对应一个键值对(这个容器不是列表)
- 字典.update(序列) - 用序列生成的字典去更新原字典(更新方式:不存在就添加,存在就修改)
05 集合
-
什么是集合(set)
集合是容器型数据类型,将{}作为容器的标志,里面多个元素用逗号隔开:{元素1, 元素2, 元素3, ……}
集合是可变的(支持增删改);集合是无序的
集合中元素是不可变并且唯一的
-
空集合
empty = set() #{}是空字典
-
非空集合
set1 = {1, 23, 34}
set2 = {(1, 2), 3, 4}
set3 = {[1, 2], 3, 4} #列表不能作为集合的元素
-
-
集合中元素的增删改查
-
查
集合没有办法直接获取单个元素,只能遍历
for 变量 in 集合:
循环体
-
增
集合.add(元素) - 在集合中添加指定元素
集合.update(序列)- 将序列中的元素全部添加到集合
nums = set() nums.update({'a': 10, 'b': 20}) print(nums) #{'a', 'b'}
-
删
集合.remove(元素) - 删除集合中指定的元素(元素不存在会报错)
集合.discard(元素) - 删除集合中指定的元素(元素不存在不会报错)
改 - 集合无法修改元素
-
-
数学集合运算
python中的集合支持数学集合运算:&(求交集)、|(求并集)、-(求差集)、对称差集(^)、 >/<(判断是否是真子集)