艺赛旗 RPA9.0全新首发免费下载 点击下载
http://www.i-search.com.cn/index.html?from=line1
问题
我们有一个包含 N 个元素的元组或序列,现在想将它分解为 N 个单独的变量。
解决方案
任何序列或者可迭代的对象都可以通过一个简单的赋值操作来分解为单独的变量,这个操作被称为序列解包。唯一的要求是变量的总数和结构要与序列相吻合。例如:
p = (4, 5)
x, y = p
x
4y
5
data = [‘ACME’, 50, 91.1, (2019, 6, 30)]
name, shares, price, date = data
name
‘ACME’date
(2019, 6, 30)
name, shares, price, (year, mon, day) = data
name
‘ACME’year
2019
如果元素的数量不匹配,将得到一个错误提示。例如:
p = (4, 5)
x, y, z = p
Traceback (most recent call last):
File “”, line1, in
ValueError: need more than 2 values to unpack
高级用法
实际上不仅仅只是元组或列表,只要对象恰好是可迭代的,那么就可以执行解包操作。这包括字符串、文件、迭代器以及生成器。比如:
s = ‘Hello’
a, b, c, d, e = s
a
‘H’b
‘e’e
‘o’
当做解包操作时,有时候并不知道具体有多少个值需要解包,这时候可以在变量前加星号。例如:
a, b, *c = ‘Hello’
c
[‘l’, ‘l’, ‘o’]
注意: 前面加了星号的变量最终的值一定是一个列表。
a, b, *c = ‘Hel’
c
[‘l’]a, b, *c = ‘He’
c
[]