嵌套式拆解

有的時候我們想要拆解的可迭代物並非平面的,而是巢狀的,這個時候嵌套式拆解可以提供我們很大的便利性,舉例來說我們有數筆個人資料記錄著名字,居住城市、年齡跟身高體重:

data = [
    ('Bill', 'Tainan', 28, (180, 72)),
    ('Cynthia', 'Kaohsiung', 18, (162, 48)),
    ('dokelung', 'Taipei', 26, (173, 70)),
]

如果我們要單獨拆解一筆該怎麼做呢?也許我們會想這樣做:

>>> data[0]
('Bill', 'Tainan', 28, (180, 72))
# 拆解開始
>>> name, city, age, hw = data[0]
>>> height, weight = hw

但是由於巢狀的 tuple 導致我們必須要分兩個階段兩個層次來拆解,其實 Python 可以讓我們一次到位:

>>> name, city, age, (height, weight) = data[0]

透過小括號標明層次的轉換可以讓我們進行嵌套式的拆解,使得不同層級的項目可以按指示展開。當然,這項技術也可以用在 for 述句中的拆解,請看下面示範:

for name, city, age, (height, weight) in data:
    # do something ...

results matching ""

    No results matching ""