Python每日一練0001
阿新 • • 發佈:2019-02-07
問題
我們有一個包含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》
關注
歡迎關注我的微信公眾號:python每日一練