Effective Python:第13条 通过带星号的unpacking操作来捕获多个元素,不要用切片

本文详细介绍了Python中的unpacking操作,特别是带星号(*)表达式的用法,包括其位置规则、配合普通变量的要求以及在处理大量数据时的内存考虑。同时,文中列举了不同情况下的错误示例,帮助读者理解其局限性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本的unpacking操作(参见第6条)有一项限制,就是必须提前确定需要拆解的序列的长度。

unpacking用法:通过带*的表达式;

特点:

1,带星号的表达式可以放在任何地方;

2,至少有一个普通变量进行搭配;

3,同一级中只能有一个带星号的表达式;

4,带星号的表达式生成结果是列表;(数据大时,需要考虑内存)

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# b, c = a
# print(b, c)  # ValueError:too many values to unpack (expected 2)
b, c, *d = a
print(b, c, d)  # 0 1 [2, 3, 4, 5, 6, 7, 8, 9]
b, *c, d = a
print(b, c, d)  # 0 [1, 2, 3, 4, 5, 6, 7, 8] 9
*b, c, d = a
print(b, c, d)  # [0, 1, 2, 3, 4, 5, 6, 7] 8 9
# *b, *c, d = a
# print(b, c, d)  # SyntaxError:multiple starred expressions in assignment

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值