Python3 序列解包

文章介绍了Python3中的序列解包特性,这是一种能够简化代码、提高可读性的语法糖。它不仅适用于列表和元组,还可以用于任何序列类型。通过示例展示了如何使用序列解包来分配和提取变量,包括使用*表达式获取多个元素,以及在不同场景下的应用,如获取序列的剩余或中间部分。此外,还展示了如何利用序列解包处理字符串切片问题,使得代码更加简洁和高效。
摘要由CSDN通过智能技术生成

Python3 序列解包

2021-08-30

Python 中有很多很实用的语法糖,这些语法糖可以帮助我们简化代码、更易理解等优点,接下里再看一个 Python3 中特别实用的语法序列解包(序列解包是 Python 3.0 之后才有的语法)。

那什么是序列解包呢?先看一个例子:

a, b, c = 1, 2, 3
a
1
b
2
c
3

这种方法并不限于列表和元组,而是适用于任意序列类型(甚至包括字符串和字节序列)。只要赋值运算符左边的变量数目与序列中的元素数目相等,你都可以用这种方法将元素序列解包到另一组变量中。

解包的使用还可以更有逼格,可以利用 * 表达式获取单个变量中的多个元素,只要它的解释没有歧义即可。

  • 获取的值默认为 list

获取剩余部分:

a, b, *c = 0, 1, 2, 3
a
0
b
1
c
[2, 3]

获取中间部分:

a, *b, c = 0, 1, 2, 3
a
0
b
[1, 2]
c
3

如果左值比右值要多,那么带 * 的变量默认为空

a, b, *c = 0, 1
a
0
b
1
c
[]
a, *b, c = 0, 1
a
0
b
[]
c
1

嵌套解包

(a, b), (c, d) = (1, 2), (3, 4)
a
1
b
2
c
3
d
4
a, b, c, d
(1, 2, 3, 4)
# 接下来实战一下,假如一个字符串 'ABCDEFGH',要输出下列格式:
A ['B', 'C', 'D', 'E', 'F', 'G', 'H']
B ['C', 'D', 'E', 'F', 'G', 'H']
C ['D', 'E', 'F', 'G', 'H']
D ['E', 'F', 'G', 'H']
E ['F', 'G', 'H']
F ['G', 'H']
G ['H']
H []
即每次取出第一个作为首然后的字符串拆成列表放置在后面

一般的处理过程是:

  1. 将切片中索引为 0 的字符赋值给 a

  2. 将切片中索引为 1 之后字符再赋值给 s

  3. 用 list 函数将字符串转变为列表

  4. 用 while 循环来 s 来判断,为空,则退出循环

s = 'ABCDEFGH'
while s:
...     x, s = s[0], list(s[1:])
...     print(x, s)
... 
A ['B', 'C', 'D', 'E', 'F', 'G', 'H']
B ['C', 'D', 'E', 'F', 'G', 'H']
C ['D', 'E', 'F', 'G', 'H']
D ['E', 'F', 'G', 'H']
E ['F', 'G', 'H']
F ['G', 'H']
G ['H']
H []
上面的处理可以用序列解包的方法会来处理序列解包在赋值时无疑更方便更简洁更好理解适用性更强

运用序列解包的功能重写上面的代码:

s = 'ABCDEFGH'
while s:
...     x, *s = s
...     print(x, s)
... 
A ['B', 'C', 'D', 'E', 'F', 'G', 'H']
B ['C', 'D', 'E', 'F', 'G', 'H']
C ['D', 'E', 'F', 'G', 'H']
D ['E', 'F', 'G', 'H']
E ['F', 'G', 'H']
F ['G', 'H']
G ['H']
H []

原文链接:https://blog.csdn.net/yilovexing/article/details/80576788

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值