一 数据容器入门
1.为什么学习数据容器
为了批量存储或批量使用多份数据。
2.什么是数据容器
生活中的容器:水杯,碗,盘子。
碗可以放盘子里,嵌套。
二 数据容器:list(列表)
1.为什么需要列表
2.列表的定义
3.列表的下标索引
什么是列表的下标索引
如何通过下标索引取出对应位置的元素
列表[下标]
注意
下标索引的取值范围,超出范围无法取出元素,并且会报错。
4.列表的常用操作
什么是方法
列表的方法
列表的查询功能(方法)
可以当作是index函数,方法和函数的功能是一样的。index严格来说是方法。
如有重复,则会返回其中第一个。
嵌套列表可以查只要把嵌套的列表中的列表下标标上就行list[7].index(5)。
列表的修改功能(方法)
append追加的列表则作为一个元素。
append追加一个,extend追加 一批。
extend(5,6,7)错
extend([5,6,7])对
可以通过变量去接收删除的元素。
pop本质功能是把指定下标的元素取出来,然后返回出去。可以得到返回值,同时这个元素也从列表中移除了。
del是类似于if、break、import一样的“语句”,语句是一段可执行代码,不是函数(函数是对代码的封装)。del不是函数。其他前面的方法返回值都是None。
列表的查询功能(方法)
特点
上限:8个字节。
注意点
5.list(列表)的遍历
什么是遍历
将容器内的元素依次取出,并处理,称之为遍历操作。
使用 while 循环,遍历列表的元素
使用 for 循环,遍历列表的元素
while 循环和 for 循环的对比
6.课程练习
总结:
二 数据容器: tuple( 元组 )
1.为什么需要元组
2.元组的定义
定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型。
3.元组的操作
其他都不能用。比如append,extend。
4.注意
list没变,变的是list里面的内容。
因为元组里面的列表元素指向的是内存地址,就算值改变了内存地址也不变。
5.元组的遍历
6.元组的特点
7.课堂练习
三 数据容器:str(字符串)
1.字符串是什么
是字符的容器。
2.字符串的操作
.strip是前后空格和换行符 \n 都被去掉。
可以理解为有2个def strip,一个有参数版本,一个没有参数的版本。
传入的是12,但不是按照12这个组合来去除,而是分成1和2,只要满足一个就去掉。
注意是前后不包括中间。
注意:空格也算一个字符。
3.字符串的遍历
4.字符串的特点
5.课堂练习
上述代码是因为 end2 = a.split("|") 错误,因为使用replace方法后会生成一个新的字符串,而不是覆盖原来的字符串,所以应该是 end2 = end.split("|")。
四 数据容器的切片
1.什么是序列
内容连续、有序,支持下标索引的一类数据容器。
2.序列的切片操作
联想:range()
因为元组和字符串都不支持修改,所以只能得到一个新的序列。
倒序+切片:
五 数据容器:set(集合)
1.为什么使用集合
2.集合的定义
并且乱序。
序列不包括集合。
3.集合的常用操作
实际测试发现全数字集合有规律,会一直取最小的数字,全字符串集合是随机的。
4.集合的遍历
5.集合的特点
6.课堂练习
定义空集合时只能my_set = set()。不能 my_set = { }。会报错。因为 { } 是空字典的定义。
六 数据容器: dict(字典、映射)
1.为什么使用字典
字典可以提供基于 Key 检索 Value 的场景实现就像查字典一样。
2.字典的定义
3.字典的嵌套
4.字典数据的获取
5.字典的常用操作
key 不存在就是新增,存在就是更新。
通过pop可以取到value,同时key 和value 被删除。
拿到全部的key,就可以for循环把所有key挨个拿过来用,依次取key就可以依次取对应的value 。
如果 for key in stu_score: 那么每次循环取出的元素就是字典的key。
6.注意
生活中字典里面也没有重复的字,所以程序中key也不能重复。
7.字典的特点
8.课堂练习
practice = {"王力鸿":{"部门":"科技部",
"工资":3000,
"级别":1},
"周杰轮":{"部门":"市场部",
"工资":5000,
"级别":2},
"林俊节": {"部门": "市场部",
"工资": 7000,
"级别": 3},
"张学油": {"部门": "科技部",
"工资": 4000,
"级别": 1},
"刘德滑": {"部门": "市场部",
"工资": 6000,
"级别": 2}}
print(f"全体员工当前信息如下:\n{practice}")
for name in practice: #拿到全部的key(姓名)
if practice[name]["级别"] == 1:
practice[name]["级别"] = 2
practice[name]["工资"] += 1000
else:
continue
print(f"全体员工级别为1的员工完成升职加薪操作,操作后:\n{practice}")
七 数据容器的通用操作
1.数据容器的分类
2.数据容器特点对比
3.数据容器的应用场景
4.数据容器的通用操作
遍历
统计
字典是按照key去比较的,不是按照value。
转换
转元组和集合也是一样,只是变成() 和 { } ,但是转集合的时候会无序并且去重。
只是看起来是这样,但是实际上是类似于print("[1,2,3,4,5]" )
无法转成字典,因为没有键值对。
排序
默认是reverse = False
如果想让容器的排序结果反转,传递True。(从大到小)
[ ] 是可选的意思。
排序后是列表对象,对内容进行排序再放入列表中。
反转:
八 字符串的大小比较
1.字符串如何比较
从头到尾,一位位进行比较,其中一位大,后面就无需比较了。
2.单个字符之间如何确定大小?
通过 ASCI 码表,确定字符对应的码值数字来确定大小
97 65