问题
我们有一个包含N个元素的元组或序列,现在想把它分解为N个单独的变量。
例如我们有一个序列[1, 2, 3],想把1, 2, 3分别赋值给a, b, c三个变量。
解决方案
只需要简单的赋值就可以了,唯一的要求是变量的数量和序列的数量必须要一致
例如:
>>> l = ['foo', 5, 'bar']
>>> a, b, c = l
>>> print(a, b, c)
foo 5 bar
>>> t = (1, 2, 3)
>>> a, b, c = t
>>> print(a, b, c)
1 2 3
但如果变量的整数和序列的数量不一致时,则会抛出ValueError
异常
>>> l = [1, 2, 3]
>>> a, b = l
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)
讨论
实际上,任何可迭代的对象(元组、序列、集合、迭代器等等)都可以这样来分解
def foo():
for i in range(3):
yield i
a, b, c = foo()
print(a, b, c)
来源
《Python Cookbook》
关注/投稿
欢迎关注我们的微信公众号:practice_for_python
想要投稿的朋友可以给我们的公众号留言,备注好【问题】【解决方案】【讨论】【来源】即可
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。