Python 程序设计讲义(52):Python 中序列解包的多种形式和使用方法
目录
在Python
中,序列解包(Sequence Unpacking)
允许我们将序列(如列表、元组等)中的元素快速地赋值给多个变量。通过序列解包,我们可以简化代码,提高代码的可读性和效率。
一、序列解包的基本概念
序列解包是指将一个序列中的元素逐一赋值给多个变量的过程。在 Python
中,序列解包通常用于将列表、元组等序列类型的数据结构中的元素分配给一组变量。
这种操作在处理函数返回值、遍历序列以及交换变量值等场景中非常常见。
序列解包的语法格式如下:
变量1, 变量2, ... , 变量n= 序列(列表、元组、集合等)
二、序列解包的基本用法
1、解包列表和元组
l1=(1,2,3,4)
l2=["汉族","回族","蒙古族","哈萨克族"]
a,b,c,d=l1
mz1,mz2,mz3,mz4=l2
print(a,b,c,d)
print(mz1,mz2,mz3,mz4)
程序运行结果如下:
1 2 3 4
汉族 回族 蒙古族 哈萨克族
2、解包字典
person = {"name": "张三", "age": 25, "city": "北京"}
name, age, city = person.items() #每个变量接收一个元组
print(name)
print(age)
print(city)
for key, value in person.items():
print(key, value)
程序运行结果如下:
('name', '张三')
('age', 25)
('city', '北京')
name 张三
age 25
city 北京
3、解包嵌套序列
l1 = [[1, 2], [3, 4], [5, 6]]
(a, b), (c, d), (e, f) = l1
print(a, b) # 输出 1 2
print(c, d) # 输出 3 4
print(e, f) # 输出 5 6
程序运行结果如下:
1 2
3 4
5 6
三、序列解包的各种应用及使用技巧
1、多变量同时赋值
格式如下:
变量1, 变量2, ... , 变量n=表达式1, 表达式2, ... , 表达式n
注意:表达式的个数与变量的个数必须相等。否则程序会报错。
例如:
x,y,z=10,"hello",58.7
print(x,y,z)
程序运行结果如下:
10 hello 58.7
2、交换两个变量的值
例如:
x,y=10,58.7
y,x=x,y
print(x,y)
程序运行结果如下:
58.7 10
3、解包函数返回值
序列解包可以用于解包函数返回的多个值,简化代码。
例如:
def func1(x,y):
return x+y,x-y,x*y,x/y
a,b,c,d = func1(100,30)
print(a,b,c,d)
程序运行结果如下:
130 70 3000 3.3333333333333335
4、解包嵌套数据结构
例如:
l1 = [[1, 2], [3, 4], [5, 6]]
(a, b), (c, d), (e, f) = l1
print(a, b) # 输出 1 2
print(c, d) # 输出 3 4
print(e, f) # 输出 5 6
程序运行结果如下:
1 2
3 4
5 6
5、处理可变长度的参数
序列解包可以用于处理函数中可变长度的参数。
例如:
#把1赋值给a,把5赋值给c,b是一个列表,内容为(2,3,4)
a, *b, c = [1, 2, 3, 4, 5]
print(a, b, c)
a, *b, c = (1, 2, 3, 4, 5)
print(a, b, c)
程序运行结果如下:
1 [2, 3, 4] 5
1 [2, 3, 4] 5
6、可以使用切片接收序列
例如:
l1=[1,2,3,4,5]
l2=[12.5,38.7,66]
l1[1:4]=l2
print(l1)
程序运行结果如下:
[1, 12.5, 38.7, 66, 5]