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