👋 前言
简介:解包是一种在Python中将可迭代对象(如列表、元组)拆分为单独变量的技术。通过解包,可以方便地将可迭代对象的元素分配给多个变量,从而简化代码并提高可读性。
💡 正文
1 基本解包
1.1 元组和列表
1.1.1 基础解包方式
tup = (1, 2, 3)
a, b, c = tup
print(f"a:{a},b:{b},c:{c}")
# a:1,b:2,c:3
lst = [1, 2, 3]
a, b, c = lst
print(f"a:{a},b:{b},c:{c}")
# a:1,b:2,c:3
1.1.2 拓展解包
tup = (1, 2, 3, 4, 5)
a, *b, c = tup
print(f"a:{a},b:{b},c:{c}")
# a:1,b:[2, 3, 4],c:5
lst = [1, 2, 3, 4, 5]
a, *b, c = lst
print(f"a:{a},b:{b},c:{c}")
# a:1,b:[2, 3, 4],c:5
1.1.3 忽略元素
numbers = (1, 2, 3, 4, 5)
num1, _, num3, _, num5 = numbers
print(f"num1:{num1},num3:{num3},num5:{num5}")
# num1:1,num3:3,num5:5
numbers = [1, 2, 3, 4, 5]
num1, _, num3, _, num5 = numbers
print(f"num1:{num1},num3:{num3},num5:{num5}")
# num1:1,num3:3,num5:5
1.1.4 嵌套解包
stu = ("张三", 18, "男", ("四川", "中国"))
name, age, sex, (province, country) = stu
print(f"name:{name},age:{age},sex:{sex},province:{province},country:{country}")
# name:张三,age:18,sex:男,province:四川,country:中国
stu = ["张三", 18, "男", ["四川", "中国"]]
name, age, sex, [province, country] = stu
print(f"name:{name},age:{age},sex:{sex},province:{province},country:{country}")
# name:张三,age:18,sex:男,province:四川,country:中国
1.2 字典
1.2.1 基础解包方式
stu = {"id": 1001, "name": "张三", "age": 18}
id, name, age = stu.values()
print(f"id:{id}, name:{name}, age:{age}")
# id:1001, name:张三, age:18
1.2.2 zip
函数拓展解包
k = ["id", "name", "age"]
v = [1001, "张三", 18]
d = dict(zip(k, v))
id, name, age = d.values()
print(f"id:{id}, name:{name}, age:{age}")
# id:1001, name:张三, age:18
1.2.3 忽略元素
stu = {"id": 1001, "name": "张三", "age": 18}
id, name, _ = stu.values()
print(f"id:{id}, name:{name}")
# id:1001, name:张三
1.3 解包函数返回值
def get_stu_info():
return '张三', 18
name, age = get_stu_info()
print(f"name:{name},age:{age}")
#name:张三,age:18
1.4 迭代遍历
stu_info = [('张三', 18), ('李四', 19), ('王五', 20)]
for name, age in stu_info:
print(f'{name}: {age}')
# 张三: 18
# 李四: 19
# 王五: 20
2 异常处理
2.1 判断
防止解包失败,通过默认值解决
lst = [1, 2]
a, b, c = lst[0], lst[1] if len(lst) > 1 else None, None
print(f"a:{a},b:{b},c:{c}")
2.2 异常捕获处理
通过try
和except
块,来捕获可能发生的异常错误
lst = [1, 2]
try:
a, b, c = lst
except ValueError as e:
print(f"错误原因: {e}")
# 错误原因: not enough values to unpack (expected 3, got 2)
🎉 欢迎关注我的公众号