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

问题
如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError 。 那么怎样才
能从这个可迭代对象中解压出N个元素出来?

record = ('Dave', 'dave@example.com', '773-555-1212', '847-555-1212')
name, email, *phone_numbers = record
print(name)  # ->Dave
print(email)  # ->dave@example.com
print(phone_numbers)  # ->['773-555-1212', '847-555-1212']

*trailing, current = [10, 8, 7, 1, 9, 5, 10, 3]
print(trailing)  # ->[10, 8, 7, 1, 9, 5, 10]
print(current)  # ->3

records = [
    ('foo', 1, 2),
    ('bar', 'hello'),
    ('foo', 3, 4),
]
def do_foo(x, y):
    print('foo', x, y)
def do_bar(s):
    print('bar', s)
for tag, *args in records:
    if tag == 'foo':
        do_foo(*args)
    elif tag == 'bar':
        do_bar(*args)
'''
输出结果:
foo 1 2
bar hello
foo 3 4
'''

line = 'nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false'
uname,*fields,homedir,sh=line.split(":")
print(uname)  # ->nobody
print(fields)    # ->['*', '-2', '-2', 'Unprivileged User']
print(homedir)   # ->/var/empty
print(sh)   # ->/usr/bin/false
data = ['ACME', 50, 91.1, (2012, 12, 21)]
name,*_,(year,*_)=data
print(name)   # ->ACME
print(year)  # ->2012

参考文档:《python cookbook(第3版)高清中文完整版(###).pdf》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值