脚踏实地的大梦想家

脚踏实地的大梦想家

分解已知元素数量的元组、序列

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(':')

【Python应用】S02 将元组、序列分解为单独的变量-LMLPHP


可迭代对象的分解

其实回归本质上,并非只能对元组和序列做分解处理,其实只要是对象可迭代,即可执行分解操作,包含字符串、文件等等。

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
10-16 14:46