Skip to content

容器和函数进阶

一、容器

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 常用方法

  1. 增删改查

    python
    # 增 - add(内容)
    # 删 - 根据内容删除:remove(内容)  任意删一个:pop()
    # 改 - 删除 + 新增
    # 查 - 查看集合的长度:len()
  2. 集合的拼接(并集、交集、差集)

    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关键字
# 全局变量调用局部变量 return

4. 函数多返回值

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要放在所有普通参数的后面 - 定义时也要先定义