對調變數值

這是一個很常見的拆解應用,我們透過拆解加上對調賦值的順序,使得變數值得以對調,考慮對調整數值 ab

>>> a = 0
>>> b = 1
# 對調開始
>>> tmp = a
>>> a = b
>>> b = tmp
# 對調完成
>>> a, b

一般的做法我們會多使用一個 tmp 變數且需要花上三行來解決問題,但是使用了拆解的技術之後就可以:

>>> b, a = a, b

右手邊的 a, b 會先製造出一個元組 (括號省略),接著透過 拆解平行賦值 的概念,我們將 a 的值給 bb 的值給 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)

results matching ""

    No results matching ""