如果一个可迭代对象的元素个数超过变量个数时,会出现”太多解压值”的异常,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' >>>