分解已知元素数量的元组、序列
e . g . 1 e.g.1 e.g.1 分解包含 N N N 个元素的元组或序列为 N N N 个单独的变量。
p = (4, 5)
x, y = p
e . g . 2 e.g.2 e.g.2
data = ['ACME', 50, 91.1, (2012, 12, 21)]
name, shares, price, date = data
e . g . 3 e.g.3 e.g.3
data = ['ACME', 50, 91.1, (2012, 12, 21)]
name, shares, price, (year, mon, day) = data
对于已知元素数量的元组序列做分解时,最需要注意的是定义的变量数量必须要与元组、序列中元素的数量相匹配,否则将会收到错误提示。
换句话说,当采用固定分解方法分解元组、序列时,如果发生错误,请多关注变量的数量是否匹配。
分解未知元素数量的元组、序列
对于分解问题,现实中更多的需要处理的是未知元组、序列中元素数量的问题。对于此,我们使用 *表达式
的公式。
e . g . 4 e.g.4 e.g.4 在未知数量的所有值中,求得去除最低值最高值的平均值;
def drop_avg(grades):
first, *middle, last = grades
return avg(middle)
e . g . 5 e.g.5 e.g.5
items = [1, 10, 7, 4, 5, 9]
head, *tail = items
e . g . 7 e.g.7 e.g.7
line = 'nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false'
uname, *field, homedir, sh = line.split(':')
可迭代对象的分解
其实回归本质上,并非只能对元组和序列做分解处理,其实只要是对象可迭代,即可执行分解操作,包含字符串、文件等等。
e . g . 8 e.g.8 e.g.8
s = 'Hello'
a, b, c, d, e = s
print('a=',a)
print('e=',e)
>>> a= H
e= o