解压可迭代对象赋值给多个变量

如果一个可迭代对象的元素个数超过变量个数时,会出现”太多解压值”的异常,Python的星号表达式可以用来解决这个问题。

record = ('Dave', '[email protected]', '773-555-1212', '847-555-1212')
name, email, *phone_numbers = record
print(name)
print(email)
print(phone_numbers)

结果:
Dave
[email protected]
['773-555-1212', '847-555-1212']

比如,你有一个公司前8个月销售数据的序列,但是你想看下最近一个月数据和前面7个月的平均值的对比。你可以这样做:

*trailing, current = [10, 8, 7, 1, 9, 5, 10, 3]
trailing_avg = (sum(trailing) // len(trailing))
print(trailing_avg , current)

结果:
7   3 

星号解压语法在字符串操作的时候也会很有用,比如字符串的分割

>> line = 'nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false'
>>> uname, *fields, homedir, sh = line.split(':') #以哪种符号作为分隔符
>>> uname
'nobody'
>>> homedir
'/var/empty'
>>> sh
'/usr/bin/false'
>>>

猜你喜欢

转载自www.cnblogs.com/wanglan/p/9289845.html