python数据结构-如何为元组中的每个元素命名
如何为元组中的每个元素命名
简述
当对象数据格式固定时,用元组比列表更节省内存空间,
我们使用索引访问元组元素,但是这种访问方式会降低程序的可读性。
举个栗子
对于学生的信息,我们有固定的数据格式,我们可以用元组表示,
但是在我们使用它的时候并不知道stu1[1],stu[2]具体代表什么信息,
这就大大降低了程序的可读性
stu1 = ("tom", 16, "male")
def fun1(stu):
if stu1[1]:
pass
if stu1[2] == 'male':
pass
fun1(stu1)
那我们怎么提高程序的可读性呢,解决方法如下
定义一系列数值常量或枚举类型
定义一系列数值常量
NAME = 0
AGE = 1
SEX = 2 stu1 = ("tom", 16, "male") def fun1(stu):
if stu1[NAME]:
pass if stu1[SEX] == 'male':
pass fun1(stu1)
分析:但是这种方式比较低效,我们可以采用元组的拆包
NAME, AGE, SEX = range(3)
stu1 = ("tom", 16, "male")
def fun1(stu):
if stu1[NAME]:
pass
if stu1[SEX] == 'male':
pass
fun1(stu1)
分析:如果还有一个老师的数据结构,元组的第一项是年龄,第二项是姓名,
如果在程序中有多种数据结构,还使用定义常量的方式,有些常量会冲突,
如果分开对象去定义常量,如STU_NAME, TEA_NAME, STU_AGE, TEA_AGE,这样全局变量太多
一般这种情况我们会使用枚举
枚举
优点:相当于创造了一个名称空间
from enum import IntEnum class StudentEnum(IntEnum):
NAME = 0
AGE = 1
SEX = 2 stu1 = ("tom", 16, "male")
print(StudentEnum.NAME == 0) #True
print(StudentEnum.AGE == 1) #True
print(isinstance(StudentEnum.NAME, int)) #True
使用标准库中的collections.namedtuple代替内置tuple
优点:
使用元组可以节省空间
提升程序可读性
from collections import namedtuple
Student = namedtuple('Student', ['name', 'age', 'sex'])
stu1 = Student("tom", 16, "male")
print(isinstance(stu1, tuple)) #True
print(stu1.name) #“tom”
print(stu1.age) #16
参考资料:python3实用编程技巧进阶
python数据结构-如何为元组中的每个元素命名的更多相关文章
- 1、如何在列表,字典,集合种根据条件筛选数据?2、如何为元组中的每个元素命名,提高程序的可读性3、如何统计出序列中元素出现的频度4、如何根据字典中value的大小,对字典的key进行排序
一.数据筛选: 处理方式: 1.filter函数在py3,返回的是个生成式. from random import randint data = [randint(-100,100) for i in ...
- 如何为元组中的每个元素命名,提高程序可读性---Python数据结构与算法相关问题与解决技巧
实际案例: 学生信息系统中,数据为固定格式:(名字,年龄,性别,邮箱) ,通常使用元组来存储 使用优点: 使用元组最大的优点在于节省空间,存储相同的数据,使用元组比使用字典,空间小很多 使用缺点: 访 ...
- python数据结构-如何根据字典中值的大小对字典项排序
如何根据字典中值的大小对字典项排序 问题举例 某班英语成绩以字典形式存储,如何根据成绩高低,计算学生成绩排名 { “tom”:80, "lily":88, "marton ...
- python数据结构-如何统计序列中元素的频度
如何统计序列中元素的频度 问题举例 如何找出随机序列[1, 5, 6, 5, 3, 2, 1, 0, 6, 1, 6]中出现频度最高的3个元素? 如何统计某篇英文文章中词频最高的5个单词? 将序列转换 ...
- Python干货:了解元组与列表的使用和区别
元组是 Python 对象的集合,跟列表十分相似.下面进行简单的对比. 列表与元组 1.python中的列表list是变量,而元组tuple是常量. 列表:是使用方括号[],元组:则是使用圆括号() ...
- Python数据结构与算法相关问题与解决技巧
1.如何在列表, 字典, 集合中根据条件筛选数据¶ In [1]: from random import randint In [2]: data = [randint(-10,10) for _ ...
- Python 如何理解可更改元组中的可变序列
在 Python 中,元组是不可变序列,那为什么当元组中的元素是可变序列时(如 list.dict)可进行增删的操作? 在定义一个元组时,Python内部会为元组中的每一个元素分配一个内存地址,当我们 ...
- python 数据结构-元组tuple
tuple0=() #空 tuple1="wo", #元组中包括单个元素用, tuple2="monkey","cat","chi ...
- Python 数据结构基本操作
数据结构是用来存储数据的逻辑结构,合理使用数据结构才能编写出优秀的代码.本文主要介绍Python提供的几种内置数据结构,包括元组.列表.字典的定义和基本操作方法以及介绍典型函数的使用方法. 元组结构 ...
随机推荐
- Windows10下virtualenv配置
1.安装virtualenv pip install virtualenv 2.选定一个目录,作为存储不同环境的总目录 3.安装virtualenvwrapper-powershell(只适用于Pyt ...
- idea中git颜色不显示或者文件右键没有git按钮解决方法
VCS--->Enable Version Control Integration,然后选择git就可以了
- IT观察】网络通信、图片显示、数据库操作……Android程序员如何利用开源框架
每个Android 程序员都不是Android应用开发之路上孤军奋战的一个人,GitHub上浩如烟海的开源框架或类库就是前人为我们发明的轮子,有的轮子能提高软件性能,而有的轮子似乎是以牺牲性能为代价换 ...
- nginx && apache 图片代理
location ~ /mmopen/ { proxy_set_header Host thirdwx.qlogo.cn; rewrite /(.+)$ /$ break; proxy_pass ht ...
- Windows下Codeblocks调试Cocos2d-x项目体验(一次失败的体验)
很久之前的一篇文章有介绍过在Ubuntu下安装Cocos2d-x3.11并使用Codeblock调试Cocos2d-x程序:http://www.cnblogs.com/moonlightpoet/p ...
- Android Studio 3依赖配置
新配置 对应的过时配置 描述 implementation compile module编译时可用,module的使用者运行时可用,对于大量使用library的项目,可以显著提高编译时间,因为它可以减 ...
- PL/SQL控制结构
顺序结构 按先后顺序 分支判断结构 IF语句 IF condition THEN statements; [ELSIF condition THEN statements;] [ELSE statem ...
- SQL语句精简版
select US.QQ,US.tel,US.username,SC.EnglishScore,SC.MathScorefrom Userinfor US right join Score SC on ...
- win 10安装Linux虚拟机教程
1.首先下载虚拟机 用的是VMware 官方下载地址:https://my.vmware.com/en/web/vmware/free#desktop_end_user_computing/vmwar ...
- 关于0x3f3f3f3f
发现有人把无穷大设成0x3f3f3f3f,好像还真不是随便设的. 0x3f3f3f3f比10^9大一点,比一般数据范围大: 乘2之后比2147483467小,满足正无穷加正无穷还是正无穷: 每个字节都 ...