实际应用场景:
学生信息系统中数据为固定格式,使用元组
来存储,操作速度快。但访问时,我们使用索引(index)
访问,大量索引降低程序可读性。如何解决该问题?
普通做法:
student = ('mtianyan',18,'male','1147727180@qq.com')
# name
print student[0]
# age
print student[1] >= 10;
# sex
print student[2] == 'male'
问题:索引值很难看,不能明白到底是什么。
C语言实现:
c: 采用宏定义枚举类型
#define NAME 0
#define AGE 1
enum Student(
NAME,
AGE,
SEX,
)
方案一:python模仿c语言枚举类型,定义一系列数值常量:
# NAME = 0
# AGE = 1
# SEX = 2
# EMAIL = 3
#采用列表拆包形式
NAME, AGE , SEX ,EMAIL = xrange(4)
student = ('mtianyan',18,'male','1147727180@qq.com')
print student[NAME]
print student[EMAIL]
方案二: 使用标准库中collections.nametuple替代内置的tuple
from collections import namedtuple
# 类的工厂
Student = namedtuple('student',['name','age','sex','email'])
s1 = Student('mtianyan',18,'male','1147727180@qq.com')
print s1
s2 = Student(name ='mtianyan',age =18,sex = 'male',email = '1147727180@qq.com')
print s2
print s1.name
print s2.name
#任何使用普通元组的地方都可以使用这一替换
print isinstance(s1,tuple)
网友评论