如何为元组中的每个元素命名

简述

当对象数据格式固定时,用元组比列表更节省内存空间,

我们使用索引访问元组元素,但是这种访问方式会降低程序的可读性。

举个栗子

对于学生的信息,我们有固定的数据格式,我们可以用元组表示,

但是在我们使用它的时候并不知道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. 1、如何在列表,字典,集合种根据条件筛选数据?2、如何为元组中的每个元素命名,提高程序的可读性3、如何统计出序列中元素出现的频度4、如何根据字典中value的大小,对字典的key进行排序

    一.数据筛选: 处理方式: 1.filter函数在py3,返回的是个生成式. from random import randint data = [randint(-100,100) for i in ...

  2. 如何为元组中的每个元素命名,提高程序可读性---Python数据结构与算法相关问题与解决技巧

    实际案例: 学生信息系统中,数据为固定格式:(名字,年龄,性别,邮箱) ,通常使用元组来存储 使用优点: 使用元组最大的优点在于节省空间,存储相同的数据,使用元组比使用字典,空间小很多 使用缺点: 访 ...

  3. python数据结构-如何根据字典中值的大小对字典项排序

    如何根据字典中值的大小对字典项排序 问题举例 某班英语成绩以字典形式存储,如何根据成绩高低,计算学生成绩排名 { “tom”:80, "lily":88, "marton ...

  4. python数据结构-如何统计序列中元素的频度

    如何统计序列中元素的频度 问题举例 如何找出随机序列[1, 5, 6, 5, 3, 2, 1, 0, 6, 1, 6]中出现频度最高的3个元素? 如何统计某篇英文文章中词频最高的5个单词? 将序列转换 ...

  5. Python干货:了解元组与列表的使用和区别

    元组是 Python 对象的集合,跟列表十分相似.下面进行简单的对比. 列表与元组 1.python中的列表list是变量,而元组tuple是常量. 列表:是使用方括号[],元组:则是使用圆括号() ...

  6. Python数据结构与算法相关问题与解决技巧

      1.如何在列表, 字典, 集合中根据条件筛选数据¶ In [1]: from random import randint In [2]: data = [randint(-10,10) for _ ...

  7. Python 如何理解可更改元组中的可变序列

    在 Python 中,元组是不可变序列,那为什么当元组中的元素是可变序列时(如 list.dict)可进行增删的操作? 在定义一个元组时,Python内部会为元组中的每一个元素分配一个内存地址,当我们 ...

  8. python 数据结构-元组tuple

    tuple0=() #空 tuple1="wo", #元组中包括单个元素用, tuple2="monkey","cat","chi ...

  9. Python 数据结构基本操作

    数据结构是用来存储数据的逻辑结构,合理使用数据结构才能编写出优秀的代码.本文主要介绍Python提供的几种内置数据结构,包括元组.列表.字典的定义和基本操作方法以及介绍典型函数的使用方法. 元组结构 ...

随机推荐

  1. ASP.NET MVC Web API 学习笔记---Web API概述及程序示例

    1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过 ...

  2. JAVA中有一个特殊的类: Object。它是JAVA体系中所有类的父类(直接父类或者间接父类)。

    接口往往被我们定义成一类XX的东西. 接口实际上是定义一个规范.标准.   ①  通过接口可以实现不同层次.不同体系对象的共同属性: 通过接口实现write once as anywhere. 以JA ...

  3. 基于物理规则的渲染(PBR)

    为毛我的效果那么挫,我也是按照公式来的 2017 -3 -20

  4. Python连接Mssql

    此篇使用的是Python3.6 下载pymssql包 打开网址http://www.lfd.uci.edu/~gohlke/pythonlibs/ 用pip安装whl文件.在cmd中输入 pip in ...

  5. 【Dubbo 源码解析】06_Dubbo 服务调用

    Dubbo 服务调用 根据上图,可以看出,服务调用过程为: Consumer 端的 Proxy 调用 Cluster 层选择集群中的某一个 Invoker(负载均衡) Invoker 最终会调用 Pr ...

  6. React Native Android原生模块开发实战|教程|心得|怎样创建React Native Android原生模块

    尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://blog.csdn.net/fengyuzhengfan/article/details/54691503) 告诉大家一个好消息. ...

  7. vs2010下release版本调试设置

    设置在Release模式下调试的方法: 1.工程项目上右键 -> 属性 2.c++ -> 常规 -〉调试信息格式 选 程序数据库(/Zi)或(/ZI), 注意:如果是库的话,只能(Zi) ...

  8. spark连数据库

    DataFrame提供了一条联结所有主流数据源并自动转化为可并行处理格式的渠道,通过它Spark能取悦大数据生态链上的所有玩家,无论是善用R的数据科学家,惯用SQL的商业分析师,还是在意效率和实时性的 ...

  9. IDEA破解教程

    IDEA目前堪称最完美的java开发工具,相信用惯了eclipse的朋友一定不这么认为,但是这并不是终点,终点是如何安装破解版的IDEA,官网给我们的两个下载:1.免费试用:2.免费.开源.作为一名程 ...

  10. ZooKeeper-3.3.4集群安装配置

    https://blog.csdn.net/shirdrn/article/details/7183503