在程序中有些数据为固定格式时,即字段数量确定、字段位置顺序确定不变,我们就可以用元组来储存。使用元组的优势是储存空间很小,访问速度也很快。如下代码对每个学生信息用元组来表示:

 # ('Jim', 16, 'male', 'jim8726@gmail.com')
# ('LiLei', 17, 'male', 'lilei8928@qq.com')
# ('Lucy', 16, 'female', 'lucy123@yahoo.com') student = ('Jim', 16, 'male', 'jim8726@gmail.com')
# name
print(student[0])
# age
if student[1] >= 18:
pass
# sex
if student[2] == 'male':
pass

程序中使用了0、1、2的索引值来访问字段,这些数字无法明确地表达该字段所代表的含义,对程序的后期维护和修改是非常不利的。那我们能不能像C语言中一样,用名字来明确表达该字段的含义,如:

 enum Student{
NAME,
AGE,
SEX,
EMAIL
}

在python中没有真正意义上的枚举类型,我们可以通过其它方法来实现,具体解决方案有二:

方案一:定义类似于其它语言的枚举类型,也就是定义一系列数值常量

 student = ('Jim', 16, 'male', 'jim8726@gmail.com')
NAME, AGE, SEX, EMAIL = range(4) # 将0,1,2,3分别赋给变量
print(student[NAME]) # 访问姓名字段
if student[AGE] >= 18: # 访问年龄字段
...
if student[SEX] == 'male': # 访问性别字段
...
print(student[EMAIL]) # 访问Email字段

方案二:使用标准库中的collections.namedtuple替代内置tuple

 1 from collections import namedtuple
# namedtuple 相当于类工厂,它的第一个参数是类的名称,
# 第二个参数是一个属性列表,相当于元组的字段
Student = namedtuple('Student', ['name', 'age', 'sex', 'email'])
# 实例化一个类对象
st = Student('Jim', 16, 'male', 'jim8928@gmail.com')
# 不再通过索引来访问元组的字段,而是通过元组对象的属性来访问各个字段
print(st.name)
print(st.age)
print(st.sex)
print(st.email)

上面的 Student 类是内置 tuple 类的子类,对象 st 是它的一个实例,在程序中的开销仅比内置 tuple 稍大一些。

最新文章

  1. SQL-从数据类型 varchar 转换为 bigint 时出错的解决方案
  2. SQL Server数据库性能优化之SQL语句篇【转】
  3. Python将Excel生成SHP
  4. Windows KB2984972安装后堵住了一个windows 7 桌面可以多个用户远程访问桌面的漏洞。
  5. MVC Controller弹窗的几种方式
  6. 【转】Eclipse编辑shell的插件(shellEd)
  7. POJ 1113&&HDU 1348
  8. UITableView.m:8042 crash 崩溃
  9. Java基础知识强化43:StringBuffer类之StringBuffer和String的相互转化
  10. 4.1. 如何在Windows环境下开发Python
  11. Objective-C分类 (category)和扩展(Extension)
  12. WCF中队列服务详解
  13. JDK+Tomcat搭建JSP运行环境--JSP基础
  14. kali权限提升之本地提权
  15. C#自定义控件、用户控件、动态加载菜单按钮
  16. python六十九课——网络编程之TCP协议
  17. 题解-洛谷4921&4931 情侣?给我烧了!(加不加强无所谓版)
  18. VMware网络连接模式—桥接、NAT以及仅主机模式的详细介绍和区别
  19. Partition Array into Disjoint Intervals LT915
  20. tomcat 7下spring 4.x mvc集成websocket以及sockjs完全参考指南(含nginx/https支持)

热门文章

  1. 取消任务(Task)
  2. Satellite-Hacking 攻击卫星/卫星安全
  3. python高级特征:列表生成式;generator, 迭代器。
  4. order-independent transparency & programmable blending
  5. Struts2标签:s:password 修改时密码为空的问题
  6. 【Winform-自定义控件】DataGridView 单元格合并和二维表头
  7. mysql优化(上)
  8. CF990G GCD Counting 点分治+容斥+暴力
  9. Windows:打印为PDF(PDF转换器)
  10. gulp+babel 实时转es6