案列:
学生信息系统中数据为固定格式:
(名字,年龄,性别,邮箱地址,...)
学生数量很大为了减少存储开销,对每个学生信息用元组表示:
('jim',16,'male','jim@gmail.com')
('LiLei',17,'male','leile@qq.com')
('Lucy',16,'female','lucy123@yahoo.com')
访问时,如果使用索引(index)访问,大量索引降低程序可读性,该如何解决问题?
1)定义常量,利用列表拆包形式
student = ('jim',16,'male','jim@gmail.com')
NAME,AGE,SEX,EMAIL = range(4) #关联索引,用命名取代数字下标
print(student[NAME]) #筛选名字
if student(AGE) >= 18: #筛选年龄
print(....)
if student(SEX) >= 18: #筛选性别
print(....)
2)使用标准库中collections .namedtuple替代内置tuple
from collections import namedtuple
Student = namedtuple('Student',['name', 'age', 'sex', 'email']) #创建一个新的子类,命名Student,传入列表序列,填写对应所需的字段元素名字。
使用子类创建元组,类似函数里实例化对象的操作,在元祖中一一传入对应的值,赋给变量
s = Student('jim',16,'male','jim@gmail.com')
s1 = Student('LiLei',17,'male','leile@qq.com')
s2 = Student('Lucy',16,'female','lucy123@yahoo.com')
print(s.name) #查看方法
print(s1.age)
print(s2.email)