Python3中的扩展序列解包

在Python中的一般的赋值语句格式如下:

>>> spam = 'Spam'                   # 基本赋值形式
>>> spam, ham = 'Spam', 'Hum'       # 元祖赋值形式
>>> [spam, ham] = ['Spam', 'Hum']   # 列表赋值形式
>>> a, b, c, d = 'spam'             # 序列赋值形式
>>> spam = ham = 'lunch'            # 多目标赋值形式
>>> spams = 10; spams += 1          # 增强型赋值形式

Python3以来,就有扩展的序列解包,具体示例:

>>> a, *b = [1, 2, 3, 4]              # a负责接收1,余下的全赋值给b
>>> a, b
(1, [2, 3, 4])
>>> a, *b, c = (1, 2, 3, 4)           # 位置可以在中间
>>> a, b, c
(1, [2, 3], 4)
>>> a, b, *c = "SPAM"                 # 也可以在后,整个为列表
>>> a, b, c
('S', 'P', ['A', 'M'])
>>> a, *b = {"A": 1, "B": 2, "C": 3}  # 如果是字典,同样为列表
>>> a, b
('A', ['B', 'C'])
>>> a, b, *c = "SB"                   # 如果不够话,则为空列表
>>> a, b, c
('S', 'B', [])

几个其它小示例:

>>> # 示例一: for循环遍历中解包的应用
>>> for (a, *b, c) in [(1,2,3,4), (5,6,7,8)]:
...     print(a, b, c)
...
1 [2, 3] 4
5 [6, 7] 8
>>> # 示例二: 未使用序列解包的一个用例
>>> L = [1, 2, 3, 4, 5]
>>> while L:
...     front, L = L[0], L[1:]
...     print(front,"->",L)
...
1 -> [2, 3, 4, 5]
2 -> [3, 4, 5]
3 -> [4, 5]
4 -> [5]
5 -> []
>>> # 示例三: 使用序列解包的一个用例
>>> L = [1, 2, 3, 4, 5]
>>> while L:
...     front,*L = L
...     print(front,"->",L)
...
1 -> [2, 3, 4, 5]
2 -> [3, 4, 5]
3 -> [4, 5]
4 -> [5]
5 -> []
>>>

从上面的示例来看, Python3.0引进的序列解包还是很有用的。 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值