不要過度構(gòu)建數(shù)據(jù)結(jié)構(gòu)捌臊。盡量使用元組(以及命名元組)而不是對象或链。
——Guido van Rossum
某學(xué)生信息系統(tǒng)中的數(shù)據(jù)格式為固定格式:
(學(xué)號、姓名鲸沮、性別、年齡)
為了減少內(nèi)存開銷锅论,每個學(xué)生信息用元組表示:
(1, 'Tom', 'M', 20)
(2, 'Bob', 'M', 21)
(3, 'Lucy', 'F', 20)
如果使用元組則程序中會大量充斥著下標(biāo)讼溺,影響程序可讀性
>>> stu_tom = (1, 'Tom', 'M', 20)
>>> stu_bob = (2, 'Bob', 'M', 21)
>>> stu_lucy = (3, 'Lucy', 'F', 20)
>>> stu_bob[0]
2
>>> stu_tom[1]
'Tom'
>>> stu_lucy[2]
'F'
用命名元組就可以很好的解決這個問題
namedtuple第一個參數(shù)為該命名元組的名字,第二個參數(shù)為屬性構(gòu)成的列表
>>> from collections import namedtuple
>>> Student = namedtuple('Student', ['no', 'name', 'gender', 'age'])
>>> stu_tom = Student(1, 'Tom', 'M', 20)
>>> stu_bob = Student(2, 'Bob', 'M', 21)
>>> stu_lucy = Student(3, 'Lucy', 'F', 20)
>>> stu_bill = Student(no=4, name='Bill', gender='M', age=21)
>>> stu_bill.name
'Bill'
>>> stu_lucy.age
20
>>> stu_tom.gender
'M'