1. 程式人生 > >Python每日一練0001

Python每日一練0001

問題

我們有一個包含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每日一練