Python 程序设计讲义(52):Python 中序列解包的多种形式和使用方法

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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

睿思达DBA_WGX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值