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提供的几种内置数据结构,包括元组.列表.字典的定义和基本操作方法以及介绍典型函数的使用方法. 元组结构 ...
随机推荐
- python class和class(object)用法区别
# -*- coding: utf-8 -*- # 经典类或者旧试类 class A: pass a = A() # 新式类 class B(object): pass b = B() # pytho ...
- dockerd启动配置_修改IP和systemd管理
docker采用CS架构,dockerd是管理后台进程,默认的配置文件为/etc/docker/daemon.json(--config-file可以指定非默认位置). 一个完整的daemon.jso ...
- 大话前端解析Json对象
一.对于标准的json对象如: var result=[{"flag":1,"macId":"2","mbId":0,& ...
- [转java发送http的get、post请求]
Http请求类 package wzh.Http; import java.io.BufferedReader; import java.io.IOException; import java.io. ...
- docker 的使用
docker 学习 1. Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序. 输出Hello world docker run ubuntu:15 ...
- laravel5.8笔记四:路由
laravel框架,必须先设置路由,才可以访问内部的控制器部分. 路由文件:routes/web.php. 基本路由 Route::get('/user', 'UserController@index ...
- xib view frame 大小调整
1.IOS - xib(Interface Builder,view) - can't change view size(view不能改变大小问题) 很多时候,我们自定义tableview.colle ...
- MySQL之SQL注入
1.SQL注入? 通过SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 2.防止SQL注入,我们需要注意以下几个要点: ①永远不要信任用户的输入 ...
- mysql存储过程异常处理
DELIMITER $$ USE `mtnoh_aaa_platform`$$ DROP PROCEDURE IF EXISTS `proc_eoms_electric_power_generatio ...
- cocos2dx添加新的类后出现错误undefined reference to的解决办法
使用cocos compile -p android编译cocos2dx项目的时候出现如下错误(新建了TestScene.h,TestScene.cpp): jni/../../Classes/App ...