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提供的几种内置数据结构,包括元组.列表.字典的定义和基本操作方法以及介绍典型函数的使用方法. 元组结构 ...
随机推荐
- Oracle sql 统计
1.按小时统计数量 SELECT TO_CHAR(RECEIVE_TIME,'HH24') HOUR ,COUNT(*) N FROM PH_PRESCRIPTION P WHERE TO_CHAR( ...
- Houdini技术体系大纲
Houdini for UE4 Pipeline的系列教程,前言等想好再写吧
- Swagger UI 传入对象类型参数
Swagger要传送对象作为参数,只需添加@ModelAttribute或@RequestBody @RestController @RequestMapping("/api/json/re ...
- VS2017 调试 Unity3D 脚本
1. 安装Unity3D最新版本. https://unity3d.com/cn/get-unity/download 2. 安装Visual Studio Community 2017. htt ...
- ubuntu使任何地方右键都能打开terminal
ubuntu下安装terminal,在任何地方右键都可以快速的打开termial sudo apt-get install nautilus-open-terminal 重启电脑
- Go 用JSON加载表格数据
支持热重载reload,但会有一些问题,下面注释有写 package table import ( "runtime/debug" ) //IntArray int类型数组 typ ...
- MQTT 嵌入式端通讯协议解析(转)
MQTT,目前物联网的最主要的协议,基本所有收费的云平台都是基于MQTT协议,比如机智云,和所有的开放云平台比如中国移动的oneNet.百度的云平台也都支持MQTT的接入.虽然MQTT很火,但是目前对 ...
- iOS - 如何得到UIImage的大小
把UIImage 转换为NSData,然后拿到NSData的大小 NSData * imageData = UIImageJPEGRepresentation(image,); length = [i ...
- Spark Distributed matrix 分布式矩阵
RowMatrix行矩阵 import org.apache.spark.rdd.RDD import org.apache.spark.mllib.linalg.Vectors import org ...
- update条件判断更新
UPDATE cw_party tp, cw_shop tsSET tp.state = 3, ts.bonus_average = CASEWHEN ts.bonus_average > 0 ...