2021年12月9日 星期四

Python:Tuple Unpacking 與 Named Tuples

最基本的 tuple unpacking 用法:

coordinates = (1.0, 2.0)
lat, lon = coordinates

而用加入 * 可以 unpack 大於一個的引數 [1]:

a, b, *rest = range(5) # (0, 1, [2, 3, 4])
a, b, *rest = range(2) # (0, 1, [])
a, *body, c = range(4) # (0, [1, 2], 3)

Named Tuples

利用 collections.namedtuple 可以將 tuple 加入每個 field 的名字以及其 class 的名字,另外也有一些相關的函數可以操作此 class,像是 _fields_make_asdict

from collections import namedtuple
Person = namedtuple('Person', 'name age')
p = Person('John', 20)
print(p.name) # John
print(p.age) # 20
print(Person._fields) # ('name', 'age')
p2_data = ('Doe', 30)
p2 = Person._make(p2_data) # Initiate a named tuple
p3 = Person(*p2_data) # Same to line 8
print(p2._asdict())

參考資料

 [1] PEP 3132 -- Extended Iterable Unpacking

沒有留言:

張貼留言