昨日回顾
for循环
for : 循环重复一件事 跟while一样
python
for 变量 in 被循环的内容:
循环体
被循环的内容: 字符串 range(开始,结束) 列表
else 正常循环结束 执行的内容
string 数据类型 不可变数据类型 其实也是变量 用于存储字符
name = 'abcd...'
字符串切片
切片: 字符串的截取 用于获得字符串一部分内容
python
字符串[ startIndex, endIndex , step ] 含头不含尾
startIndex : 开始索引 如果步长是正整数 默认值为0 如果步长为负整数 默认值为-1
endIndex : 结束索引 默认就是最后一个 取决步长是正数还是负数
step : 步长 默认值为1
其他方法:
查找:
**find()**找到一个匹配的内容索引返回 找不到返回-1
index() 找到一个匹配的内容索引返回 找不到就报错
修改:
**replace(old , new , count)**替换 将旧的内容换成新的内容 count表示替换的次数
**split ("") 切割:**将字符串中指定的内容进行分割 将分割好的放在列表中 [元素, 元素,元素]
**join () 拼接:**将一段内容按照特殊的符号进行拼接
今日课程
列表:(list)
为什么需要列表?
列表一次可以储存多个数据
列表的定义?
python
语法:
列表名称 = [元素1, 元素2, 元素3, ...]
注意: 列表是可变的
# 例:定义一个列表,用于保存苹果、香蕉以及菠萝
list1 = ['apple', 'banana', 'pineapple']
# list列表类型支持直接打印
print(list1)
# 打印列表的数据类型
print(type(list1)) # <class 'list'>
注意:列表可以一次存储多个数据且可以为不同的数据类型
python
# 演示列表
"""
如何定义列表:
列表的变量名称 = [元素1,元素2,元素3.......]
"""
# 需求1: 请定义一个列表, 要求列表中存储 张三 李四 6 赵六 True... 多个姓名,不同的数据类型
list1 = ['张三','李四',6,'赵六',True,'周八','李九']
# 如何获取列表中每一个元素呢? 与 字符串方式 一致 都是基于索引下标的方式
# 获取第三个数据: 索引为 2
e = list1[2]
print(e)
# 使用切片获取某个范围的数据: 获取 第2到第5个, 不含第五个
es = list1[1:4]
print(es)
# 如何将列表中每一个元素依次的获取出来呢? 遍历列表呢?
print("------------------------------")
# for循环:
for e in list1:
print(e)
列表的相关操作
列表的作用是一次性存储多个数据,我们可以对这些数据进行的操作有:
增、删、改、查。
查操作

python
# 演示: 列表的查询API
"""
index() : 判断传入的元素在列表中索引下标 如果不存在 直接报错
count() : 统计传入的指定元素 在 列表中出现了多少次
in : 判断某个元素是否存在 如果存在 返回True 如果不存在 返回False
not in : 判断某个元素是否不存在 如果不存在 返回True 如果存在 返回False
"""
# 1- 定义一个列表
list1 = ['张三', '李四', 5, 10, True, False, 5, '张三', '张三']
print(list1)
# 2- 演示相关的API
# 2.1 index: 判断 李四在列表中下标位置
print(list1.index('李四'))
# 2.2 count : 统计 张三在列表中出现了多少次呢
print(list1.count('张三'))
# 2.3 in 和 not in
# 判断 数字5 是否在 容器中, 如果在, 帮我统计 数字5 出现了多少次
if 5 in list1:
# 说明 5 是存在容器中
print(f'5在容器中出现了{list1.count(5)}次')
else:
print("不存在")
增操作

python
# 演示 列表的添加操作
"""
append(): 向列表的尾部添加数据
extend(): 用于将一个列表中每一个元素直接添加到另一个列表中
insert(): 用于向指定位置添加元素
"""
# 定义一个列表
list2 = [7, 5, 3, 9, 10, 2]
print(list2)
# 需求1: 向列表添加一个数字 20
list2.append(20)
print(list2)
# 需求2: 有以下一个列表, 请将该列表中元素添加到 list2中
list3_tmp = [15,19,13]
list2.extend(list3_tmp)
print(list2)
# 需求3: 在索引 2的位置 添加一个 100
list2.insert(2,100)
print(list2)
删操作

python
# 演示 列表的元素删除
"""
del 列表[索引] : 删除指定索引的元素 无返回值
pop(): 删除指定索引下标的元素, 如果不设置下标, 默认删除尾部的一个元素, 并且将该元素作为返回值返回
remove(): 删除指定的元素, 移除是匹配到的第一个元素
"""
# 需求1: 删除 索引下标为 2 的数据
del list2[2]
print(list2)
# 需求2: 从直接弹出当前列表中最后一个元素,并且拿到该元素的内容
e = list2.pop()
print(e)
print(list2)
# 需求3: 删除列表中 数字 20
list2.remove(20)
print(list2)
改操作

python
# 列表修改操作:
"""
列表[索引] = 修改后的值 : 将指定索引的元素进行重新赋值
reverse() : 对列表 进行 反转
sort(): 对列表进行排序操作
"""
# 需求1: 请修改 第5个索引的数据, 将其更改4
list2[5] = 4
print(list2)
# 需求2: 对列表进行反转:
list2.reverse()
print(list2)
# 需求3: 对数据进行排序操作
list2.sort(reverse=False)
print(list2)
列表的循环遍历
什么是循环遍历?答:循环遍历就是使用while或for循环对列表中的每个数据进行打印输出
python
"""
语法: for 变量 in 列表 for循环(个人比较推荐)
"""
list1 = ['貂蝉', '大乔', '小乔']
# for
for temp in list1:
print(temp)
列表的嵌套
1, 2, 3, 4, 5 , \[a,b,c,\[ a,b,c,d \]\]
列表的嵌套:列表中又有一个列表,我们把这种情况就称之为列表嵌套
在其他编程语言中,称之为叫做二维数组或多维数组
python
# 列表的嵌套使用: 列表中的元素 依然是一个列表
# 假设黑马程序员北京校区有三个大模型班级, 每个班级有五位同学, 请帮我保存一下这个校区信息
class_LLM_1 = ['小张','小李','小王','小赵','小孙']
class_LLM_2 = ['张三','李四','王五','赵六','田七']
class_LLM_3 = ['周八','李九','老王','老田','老李']
# 当前这个 bj_hm 是一个列表, 列表中有三个元素, 每一个元素又是一个列表, 此时就是列表的嵌套应用
# 当前嵌套二层: 称为 二维列表 如果大于二层,称为多维列表
bj_hm = [class_LLM_1,class_LLM_2,class_LLM_3]
# 如何遍历呢? 获取每一个姓名
for e_list in bj_hm:
for name in e_list:
print(name)
元组(tuple):
为什么需要元组?
使用元组,元组可以存储多个数据 且元组内的数据是不能修改的。
元组的定义
元组特点:定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型
python
语法:
# 多个数据元组
tuple1 = (10, 20, 30)
# 单个数据元组
tuple2 = (10,)
正确:tuple2 = (10,) → 类型为 <class 'tuple'>
注意:如果定义的元组只有一个数据,那么这个数据后面也要添加逗号,否则数据类型为唯一的这个数据的数据类型。
元组的相关操作方法
由于元组中的数据不允许直接修改,所以其操作方法大部分为查询方法。

python
"""
1.元组可以存放多种数据类型
2.元组中的数据允许重复
3.元组不可被修改
查询:
元组[索引]
index('搜索的内容') 查找指定数据的索引 找到返回索引 没有找到报错
len() 获得元组的长度
"""
tuple_1=( 10 , 20 , 30, 40 ,'jack','rose' , True , 10 , 20 ,'jack')
print(tuple_1)
print( tuple_1[4])
print( tuple_1.index('jack'))
print( tuple_1.count('jack'))
print( len(tuple_1) )
for temp in tuple_1:
print(temp)
集合的定义与使用(set)
什么是集合?
集合(set)是一个无序 的不重复元素序列。
① 天生去重
② 无序
有序的序列 无序的序列
合的定义
在Python中,我们可以使用一对花括号{}或者set()方法来定义集合,但是如果你定义的集合是一个空集合,则只能使用set()方法。
集合操作的相关方法(增删查)
**add()方法:**向集合中增加一个元素(单一)
remove()方法:删除集合中的指定数据,如果数据不存在则报错。
集合中的查操作
① in :判断某个元素是否在集合中,如果在,则返回True,否则返回False
② not in :判断某个元素不在集合中,如果不在,则返回True,否则返回False
python
# 演示集合操作
"""
如何定义呢?
方式一: 集合变量名称 = {元素1,元素2,元素3.....}
方式二: 定义空集合 集合变量名称 = set()
相关的API:
添加数据API: add()
删除数据API: remove()
查询数据API:
in: 判断是否存在
not in 判断是否不存在
遍历集合
特性: 无序 和 去重 同时 set是可变类型
"""
# 1- 如何定义集合
# 方式一
set1 = {1, 2, 3, 2, 6, '张三', '李四', '张三'}
print(set1)
# 方式二:
set2 = set()
print(set2)
# 2- 相关的操作:
# 2.1 添加数据: 给 set2 添加 1 2 3 三个元素
set2.add(1)
set2.add(2)
set2.add(3)
print(set2)
# 2.2 删除数据: 请将 set1中 张三 删除
set1.remove('张三')
print(set1)
# 2.3 查找操作: 查询 在 set1中是否有 王五 如果没有 请添加
if '王五' not in set1:
# 添加王五
set1.add('王五')
print(set1)
# 2.4 遍历操作
for e in set1:
print(e)
字典的定义与使用(dict)
为什么需要字典(dict)?
可以将一个人的所有属性数据放到一个元素中
Python中字典(dict)的概念
特点:
① 符号为大括号(花括号) => {}
② 数据为键值对形式出现 => {key:value},key:键名,value:值,在同一个字典中,key必须是唯一(类似于索引下标)
③ 各个键值对之间用逗号隔开
关于字典的保护
在字典中,键名除了可以使用字符串的形式,还可以使用数值的形式来进行表示
在Python代码中,字典中的key必须使用引号引起来
字典的增操作
python
语法:
字典名称[key] = value
注:如果key存在则修改这个key对应的值;如果key不存在则新增此键值对。
字典的删操作
- del字典名称[key]:删除指定元素
- clear()方法:清空字典中的所有key
字典的改操作
python
语法:
字典名称[key] = value
注:如果key存在则修改这个key对应的值;如果key不存在则新增此键值对。
字典的查操作
使用具体的某个key查询数据,如果未找到,则直接报错。
python
字典序列[key]

python
"""
字典都是以键值对的方式出现的
增 字典的key不存在 即是新增
字典[key] = value
改 字典的key存在 即是修改
字典[key] = value
删
del 字典[key] 删除一个指定属性
clear() 清空字典的所有数据
查
字典[key] : 获得指定key的value数据
支持循环
字典.keys() 获得字典中所有的键
# 方案1: 遍历字典的所有key 然后在循环中获得所有的值
for key in dict_1.keys():
print( key , dict_1[key] )
# 方案2: 遍历字典的所有value 在循环中打印值即可
for temp in dict_1.values():
print(temp)
# 方案3 : 字典中提供函数 items() 项 在遍历的过程 自动将一组数据转换成元组数据
for temp in dict_1.items():
print(temp[0] , temp[1])
# 方案4 : 自动拆包
"""
dict_1 = {'username': 'tom', 'age': 20, 'gender': '男', 'address': '北京昌平区'}
print(dict_1)
# 新增一个属性 电话 phone 13811112222
dict_1['phone'] = '13811112222'
print(dict_1)
# 修改username 的名字为 嬲嫐
dict_1['username']='嬲嫐'
print(dict_1)
# 删除address属性
del dict_1['address']
print(dict_1)
#dict_1.clear()
#print(dict_1)
print(dict_1['gender'])
# 遍历数据
# 方案1: 遍历字典的所有key 然后在循环中获得所有的值
for key in dict_1.keys():
print( key , dict_1[key] )
print("--------------------------------------------------")
# 方案2: 遍历字典的所有value 在循环中打印值即可
for temp in dict_1.values():
print(temp)
print("--------------------------------------------------")
# 方案3 : 字典中提供函数 items() 项 在遍历的过程 自动将一组数据转换成元组数据
for temp in dict_1.items():
print(temp[0] , temp[1])
容器拆包
什么是拆包?
简单来说就是把一个元组中的数据一个一个拆解出来的过程,就称之为叫做拆包操作。
python
tuple1 = (10, 20)
# 拆包
num1, num2 = tuple1
以上代码可以简写为
num1, num2 = (10, 20)
还可以进一步简写
num1, num2 = 10, 20