主题
容器和函数进阶
一、容器
1.元组
元组是一个只读列表
1.1 定义
python
# 变量名 = (1,'1',true)
# 变量名 = tuple()
# 元组名 = ()
# 变量名 = (1,) # 特殊:单个内容的元组,要加逗号1.2 常用方法
python
# 统计元素出现次数 元组.count(要统计的元素)
# 统计元素出现索引 元组.index(要统计的元素)
# 统计元组长度 len(元组)
# 通过索引查找 元组[索引]
# 通过切片查找 元组[开始:结束:步长]2.集合
无序不重复
2.1 定义
python
# 字面量 - {}
# {1,2,2,3} 1.去重 2.无序(不能用索引)
# 定义集合:
# 变量名称 = {元素,元素,元素,......}
# 变量名称 = set()2.2 常用方法
增删改查
python# 增 - add(内容) # 删 - 根据内容删除:remove(内容) 任意删一个:pop() # 改 - 删除 + 新增 # 查 - 查看集合的长度:len()集合的拼接(并集、交集、差集)
python# 并集 (合并两个集合) # 集合.update(集合) # 差集 (求出两个集合的差异) # 计算+更新到集合1 # 集合1.difference_update(集合) # 只计算不更新 # 集合1 = 集合.difference(集合) # 交集(两个集合共同的) # 集合 & 集合
3. 字典
字典是对数据进行解释的时候使用的类型,字典是储存不同类型数据的主要方式
3.1 定义
python
# 变量名 = {key:value,key:value,key:value,......}
# 空字典:
# 变量名 = {} # 不是空集合
# 变量名 = dict()
# 注:key要用引号包裹,没有引号表示变量的值(不建议)
# 注:多个键值对之间用逗号隔开
# 注:字典的键不能重复3.2 常用方法
python
# 增(键不存在)
# 字典[键] = 新的值
# 删
# 字典.pop(键)
# 改
# 字典[键] = 新的值
# 查
# 字典[键]
# 获取键值对的长度 len(字典)
# 获取当前所有的键/值(返回一个列表)
# 字典.key()
# 字典.values()
# 判断元素是否在容器中 - in(返回一个布尔值)4. 类型转换
python
# tuple(列表名) 列表转元组
# list(元组名) 元组转列表
# 列表转集合 - set(列表名)
# 集合转列表 - list(集合名)5. 列表和元组的拼接
python
# 列表.extend(元组) 将元组合并到列表上
# 元组+元组 +的和并不会改变原数据,会产生一个新数据
# 列表+列表6. 内置函数
python
# 容器.sort() # 从小到大
# 容器.sort(reverse=True) # 从大到小
# max(容器) # 找出最大值
# min(容器) # 找出最小值二、推导式
1. 列表推导式
python
# [元素 for i in 可迭代对象]2. 集合推导式
python
# {元素 for i in 可迭代对象}3. 字典推导式
python
# {键:值 for i in 可迭代对象}4. 生成器表达式
python
# (元素 for i in 可迭代对象)5. 三元表达式(三目表达式)
python
# 语法:为真时执行 if 条件 else 为假时执行三、函数进阶
1. 函数说明文档
python
# 写在函数内,代码段前
# 用""" """包裹
"""
函数说明
:param 参数名: 参数说明
:return: 返回值说明
"""2. 函数嵌套
- 函数的内部可以再调用其他函数
- 函数的参数也可以层层传递
3. 函数变量的作用域
python
# 全局作用域 - 全局变量
# 函数外部的区域
# 局部作用域 - 局部变量
# 函数内部的区域
# 全局作用域无法访问局部变量,全局变量可以在任何一个地方被访问到
# 在局部修改全局变量 global关键字
# 全局变量调用局部变量 return4. 函数多返回值
python
# 函数返回多个值,使用一个return ,返回值用逗号隔开
# 调用时对应,用逗号隔开
# 示例:
def fn():
name = 'zs'
age = 18
return name,age
x,y = fn()
# 拆包
# [x, y] = [1, 2]
# x, y = [1, 2] # 简写5. 参数传递
python
# 位置参数 - 实参和形参位置和个数必须对应
# 关键字参数 - 通过key = value 传递,可以忽略位置顺序
# key时定义关键字的形参,名字必须保持一致
# 默认值参数(缺省参数)- 定义函数时赋值
# 如果不传递默认值参数,以默认值为主,如果传递了,则覆盖默认值
# 可以不传递默认值参数(一般定义在最后一个)
# 不定长参数 - 参数个数不确定,也可以不传
# 位置不定长参数 - 用*args定义 - 以元组形式接受参数
def get_sum(*args):
sum = 0
for i in args:
sum += i
print(args, f'和是{sum}')
get_sum(1, 2, 3, 4, 5)
# 关键字不定长参数 - 用**kwargs定义 - 以字典形式(key:value)接收参数
def get_sum(**kwargs):
total = sum(kwargs.values())
print(kwargs, f'和是{total}')
get_sum(x=1, y=2, z=3) # 调用时x=1,y=2,z=3,接收是{x:1,y:2,z:3}
# 混合使用 - 位置参数必须在前,*args/**kwargs要放在所有普通参数的后面 - 定义时也要先定义