如何在元组中的每个元素命名,提高程序可读性
2017-07-23 14:36
375 查看
实际案例
学生信息系统中数据为固定格式:(名字,年龄,性别,邮箱地址,…)
如:学生数量很大为了减小存储开销,对每个学生信息用元组表示:
(‘Jim’, 16, ‘male’, ‘jim@gmail.com’)
(‘Li’, 17, ‘male’, ‘li@163.com’)
(‘Lucy’, 16, ‘female’, ‘lucy@qq.com’)
…
通常我们采用索引的方式访问元组,具体操作如下:
这种方式虽然简单且能获取我们想要的数据,但你有没有注意到在代码中我们使用3个索引,若我们不看注释,就要看元组每一个元素所代表的信息了,这样我们代码的可读性就很低了。那有什么办法来解决这个问题呢?这时我们不妨回想一下我们大多数人在大学中学习的第一门编程语言—— C语言,我们通常在C语言中进行如下操作:
因此,我们可以使用类似C语言中的枚举类型的方式访问元组,具体操作如下:
这样一看,我们就知道各处索引是获取元组内什么信息了,代码的可读性是不是变高了呢?让我们继续再看看我们刚刚的代码,有没有发现给NAME、AGE、SXE和EMAIL这几个变量赋值有点繁琐了呢?因此,我们可将其赋值代码进行如下转换:
那我们再思考一下,还有没有方法既然提高程序的可读性又能获取我们的元组呢?当然是有的,我们可以使用Python标准库中collections.namedtuple替代内置的tuple,其中namedtuple函数的具体用法可查看Python官方文档,这里我们将利用namedtuple函数进行如下操作:
其输出结果如下:
简书个人主页:http://www.jianshu.com/u/766a46e00f6b
学生信息系统中数据为固定格式:(名字,年龄,性别,邮箱地址,…)
如:学生数量很大为了减小存储开销,对每个学生信息用元组表示:
(‘Jim’, 16, ‘male’, ‘jim@gmail.com’)
(‘Li’, 17, ‘male’, ‘li@163.com’)
(‘Lucy’, 16, ‘female’, ‘lucy@qq.com’)
…
通常我们采用索引的方式访问元组,具体操作如下:
# -*- coding: utf-8 -*- student = ('Jim', 16, 'male', 'jim@gmail.com') # 打印学生姓名 print student[0] # 学生年龄 if student[1] >= 18: pass # 学生性别 if student[2] == 'male': pass
这种方式虽然简单且能获取我们想要的数据,但你有没有注意到在代码中我们使用3个索引,若我们不看注释,就要看元组每一个元素所代表的信息了,这样我们代码的可读性就很低了。那有什么办法来解决这个问题呢?这时我们不妨回想一下我们大多数人在大学中学习的第一门编程语言—— C语言,我们通常在C语言中进行如下操作:
# 第一种方式——宏定义 #define NAME 0 #define AGE 1 #define SEX 2 #define EMAIL 3 # 第二种方式——枚举类型 enum Student { NAME, AGE, SEX, EMAIL, }
因此,我们可以使用类似C语言中的枚举类型的方式访问元组,具体操作如下:
# -*- coding: utf-8 -*- NAME = 0 AGE = 1 SEX = 2 EMAIL = 3 student = ('Jim', 16, 'male', 'jim@gmail.com') # 打印学生姓名 print student[NAME] # 学生年龄 if student[AGE] >= 18: pass # 学生性别 if student[SEX] == 'male': pass
这样一看,我们就知道各处索引是获取元组内什么信息了,代码的可读性是不是变高了呢?让我们继续再看看我们刚刚的代码,有没有发现给NAME、AGE、SXE和EMAIL这几个变量赋值有点繁琐了呢?因此,我们可将其赋值代码进行如下转换:
NAME, AGE, SEX, EMAIL = xrange(4)
那我们再思考一下,还有没有方法既然提高程序的可读性又能获取我们的元组呢?当然是有的,我们可以使用Python标准库中collections.namedtuple替代内置的tuple,其中namedtuple函数的具体用法可查看Python官方文档,这里我们将利用namedtuple函数进行如下操作:
# -*- coding: utf-8 -*- from collections import namedtuple Student = namedtuple('Student', ['name', 'age', 'sex', 'email']) s = Student('Jim', 16, 'male', 'jim@gmail.com') print s.name, s.age, s.sex, s.email
其输出结果如下:
Jim 16 male jim@gmail.com
简书个人主页:http://www.jianshu.com/u/766a46e00f6b
相关文章推荐
- python 2-2 如何为元组中的每个元素命名, 提高程序可读性-collections.namedtuple
- python-2-如何为元组中的每个元素命名,提高程序可读性?
- python高效编程技巧2(如何为元组的每个元素命名,提高程序的可读性)
- 给元组的每个元素命名,提高程序可读性
- 2-2为元组中的每个元素命名,提高程序可读性
- 为元组中的每个元素命名,提高程序可读性
- Python高级编程-如何为元祖中的每个元素命名,提高程序可读性?
- python 为元组中的每个元素命名,提高程序可读性
- 如何为元祖中的每个元素命名以提高可读性
- 为tuple中的元素命名,提高程序的可读性
- python_如何为元组中每个元素命名
- python 为元组的每个元素命名
- python基础学习之如何对元组各个元素进行命名详解
- <24>python学习笔记——为元组中的每个元素命名
- 分类: linux程序设计 2012-03-06 22:01 10646人阅读 评论(5) 收藏 举报 linux语言c工具gcc程序开发 调试是每个程序员都会面临的问题. 如何提高程序员的调
- Python高效编程-为元组的每个元素命名
- python【2】为元祖中的元素命名,提高可读性
- 【慕课网】元祖命名规范 提高程序可读性
- 如何提高程序效率
- 必须串行执行程序如何提高执行效率之队列方法