将序列分解为单独的变量

问题

我们有一个包含N个元素的元组或序列,现在想将它分解为N个单独的变量

解决方案

任何序列(可迭代的对象)都可以通过一个简单的赋值操作来分解为单独的变量。
唯一的要求时变量的总数和结构要与序列相吻合
例如:

p = (4, 5)
x, y = p
print(x) #4
print(y) #5

data = ['BAI', 80, 67.3, (2012,34,456)]
name, shares, price, date = data
print(name) #BAI
print(shares) #80
print(price) #67.3
print(date) #(2012, 34, 456)

如果元素的数量不匹配,将得到一个错误提示:

Traceback (most recent call last):
  File "E:/wxerp_api/apps/text.py", line 18, in <module>
    name, shares, price = data
ValueError: too many values to unpack (expected 3)

讨论

实际上不仅仅只是元组或列表,只要对象恰好时可迭代的,那么就可以执行分解操作。
这包括字符串、文件、迭代器以及生成器。
比如:

s = "Word"
a, b, c, d = s
print(a) #W
print(b) #o
print(c) #r
print(d) #d

当做分解操作时,有时候可能想丢弃某些特定的值,Python并没有提供特殊的语法来实现这一点,但是通常可以选一个用不到的变量名,以此来作为要丢弃的值的名称。
例如:

data = ['BAI', 80, 67.3, (2012,34,456)]
_, shares, price, _ = data
print(shares) #80
print(price) #67.3

但是请确保选择的变量名没有在其他地方用到过

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值