對調變數值
這是一個很常見的拆解應用,我們透過拆解加上對調賦值的順序,使得變數值得以對調,考慮對調整數值 a
、b
:
>>> a = 0
>>> b = 1
# 對調開始
>>> tmp = a
>>> a = b
>>> b = tmp
# 對調完成
>>> a, b
一般的做法我們會多使用一個 tmp
變數且需要花上三行來解決問題,但是使用了拆解的技術之後就可以:
>>> b, a = a, b
右手邊的 a, b
會先製造出一個元組 (括號省略),接著透過 拆解 和 平行賦值 的概念,我們將 a
的值給 b
,b
的值給 a
,就可以完成變數值的對調了。
這個技巧相當實用,比如說我們可以這樣來完成費氏數列:
def fibonacci(n):
""" yield first n items of fibonacci
"""
a, b = 0, 1 # 這裡我們也偷用了拆解來完成賦值
for i in range(n):
a, b = b, a+b
yield a
實務上可以這樣使用:
# 印出費氏數列的前十項
for k in fibonacci(10):
print(k)