学习参考视频:第一阶段-第六章-12-集合的定义和操作_哔哩哔哩_bilibili
Day4学习进度:第六章12-19 第七章
知识点总结:
列表、元组、字符串都支持重复元素且有序,具有一定的局限性
集合
不支持元素的重复(自带去重功能)、并且内容无序
# 定义集合字面量
{元素, 元素, 元素, ……, 元素}
# 定义集合变量
变量名称 = {元素, 元素, 元素, ……, 元素}
# 定义空集合
变量名称 = set()
myset = {1,2,3,4,3,5,6,3,7,11,123,100}
myset_empty = set()
print(myset)
集合无序:不支持下标索引访问
集合允许修改:
添加元素:集合.add(元素)
移除元素:集合.remove(元素)
随机取元素:集合.pop()
清空集合:集合.clear()
取差集:取出集合1和集合2的差集(集合1有而集合2没有的),得到一个新集合,集合1和集合2不变。语法:集合1.differenc(集合2)
消除差集:在集合1中删除和集合2相同的元素,集合1被修改,集合2不变。语法:集合1.difference_update(集合2)
合并集合:集合1和集合2合并成新集合。语法:集合1.union(集合2)
统计元素数量:len()
集合的遍历:不支持下标索引,不能用while循环,可以用for。
# 定义集合
myset = {"你好", "世界", "Python", "你好", "超能洗衣液", "Python"}
print(myset)
# 添加新元素
myset.add("c++")
myset.add("Python")
print(myset)
# 移除元素
myset.remove("c++")
print(myset)
# 随机取元素
element = myset.pop()
print(element)
print(myset)
# 清空集合
myset.clear()
print(myset)
# 差集
set1 = {1,2,3}
set2 = {1,5,6}
set3 = set1.difference(set2)
print(set3)
# 消除差集
set1.difference_update(set2)
print(set1)
print(set2)
# 合并集合
set1 = {1,2,3,4}
set2 = {1,5,6,4}
set3 = set1.union(set2)
print(set3)
# 遍历集合
set1 = {1,4,5,2,3}
for element in set1:
print(element)
字典
定义:可以通过关键字key找到其值value,字典的key不能重复
# 定义字典字面量
# {key:value, key:value, ……, key:value}
# 定义字典变量
# mydick = {key:value, key:value, ……, key:value}
mydick1 = {"王力宏":80, "周杰伦":100, "小黑子":50}
# 定义空字典
mydick2 = {}
mydick3 = dick()
字典的key和value可以是任意类型,但key不能为字典,由此可知字典可以嵌套。
# 字典嵌套
dick1 = {
"王力宏":{
"语文":100, "数学":99, "英语":98
},
"周杰伦":{
"语文":90, "数学":89, "英语":88
}
}
print(dick1)
score = dick1["周杰伦"]["语文"]
print(score)
字典的操作
新增/更新元素:字典[key]=value
元素的删除:字典.pop(key)。获取指定key的值并将其从字典中删除。
清空元素:字典.clear()。
获取全部key:字典.key()。获取字典中全部的key
遍历字典1:通过for循环取key可以遍历字典
遍历字典2:直接对字典进行for循环
统计元素数量:len()
mydick = {"周杰伦":99}
# 新增元素
mydick["王力宏"] = 88
print(mydick)
# 更新元素
mydick["王力宏"] = 98
print(mydick)
# 删除元素
inf = mydick.pop("王力宏")
print(inf)
print(mydick)
# 清空元素
mydick.clear()
print(mydick)
# 获取全部key
mydick = {"周杰伦":99, "林俊杰":55, "蔡依林":88}
keys = mydick.keys()
print(keys)
# 遍历字典1
for key in keys:
print(mydick[key])
# 遍历字典2
for key in mydick:
print(mydick[key])
数据容器总结
分类:
是否支持下标索引
支持:列表、元组、字符串——序列类型
不支持:集合、字典——非序列类型
是否支持重复元素
支持:列表、元组、字符串——序列类型
不支持:集合、字典——非序列类型
是否可以修改
支持:列表、集合、字典
不支持:元组、字符串
数据容器的通用操作
遍历for、统计元素个数len、统计最大元素max、统计最小元素min
数据容器的类型转换-不能转成字典
通用排序:sorted(容器, [reverse = True]),排序结果会赋给一个列表
第七章
函数的多个返回值
def test_return():
return 1,"HELLO",True
x,y = test_return()
print(x)
print(y)
函数的多种传参方式
位置参数、关键字参数、缺省参数、不定长参数
位置传参:根据参数的前后顺序进行传参
关键字参数:
def user_info(name, age, gender):
print(f"您的名字是:{name},年龄是{age},性别是{gender}")
# 关键字传参
user_info(name = "小明", age = 15, gender = "男")
# 可以不按顺序传参
user_info(age = 15, name = "小明", gender = "男")
# 可以和位置参数混用,但位置参数必须在前且匹配参数顺序
user_info("小明", age = 15, gender = "男")
缺省参数:传递参数时可以赋一个默认值
def user_info(name, age, gender = "男"):
print(f"您的名字是:{name},年龄是{age},性别是{gender}")
# 默认参数
user_info(name = "小明", age = 15)
# 可更改
user_info(age = 15, name = "小明", gender = "女")
不定长参数:可变参数,用于不确定调用的时候会传递多少个参数(也可以不传参)的场景
类型:位置传递、关键字传递
# 位置传递不定长
def user_info(*args):
print(args)
user_info("Tom")
user_info("Tom",18,"男")
# 关键字传递不定长
def user1_info(**kwargs):
print(kwargs)
user1_info(name = "Tom", age = 15, gender = "男")
位置传递:所有参数会被args变量手机,根据传进参数位置合并为一个元组,args为元组类型
关键字传递:参数是“键=值”形式的情况下,所有得键值对会被kwargs接受,同时根据键值对组成字典
匿名函数
函数作为参数传递:将函数作为参数传入另外一个函数中进行使用,本质上是一种计算逻辑的传递,而非数据的传递
def test_info(compute):
result = compute(1,3)
print(result)
def compute(x,y):
return x+y
test_info(compute)
lambda匿名函数:只可临时用一次
lambda 传入参数: 函数体(一行代码)
- lambda是关键字,表示定义匿名函数
- 传入参数表示匿名函数的形式参数
- lambda函数体只能写一行,无法写多行代码
def test_info(compute):
result = compute(1,3)
print(result)
test_info(lambda x,y:x+y)