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

原文地址:https://www.cnblogs.com/marton/p/10727362.html

时间: 2024-11-08 22:22:43

python数据结构-如何为元组中的每个元素命名的相关文章

为元组中的每个元素命名,提高程序可读性

元组中,使用索引(index)访问时,会出现大量索引,降低程序的可读性. 解决方法:1: 定义类似与其他语言的枚举类型,也就是定义一系列数值常量 eg_v1:定义一个学生信息的元组,包括姓名,年龄,性别,邮箱 ("aaaa",22,"boy","[email protected]") ("bbbb",20,"boy","[email protected]") ("cccc&qu

Python数据结构之列表元组字典的用法

数据结构的含义 在学习数据结构之前,我们先来了解下数据结构的含义.数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构.在Python语言中,最基本的数据结构是序列(sequence).序列中的每个元素被分配一个序号----即元素的位置,称为索引或下标,索引从0开始递增. 典型的序列包括列表.元组和字符串.其中,列表是可变的(可修改),而元组和字符串是不可变的(一旦创建了就是固定的).列表.元组和字符串也是较常用的数据结构

python数据结构-列表和元组

1.列表和元祖 1)列表和元组,都是一个可以放置任意数据类型的有序集合 在绝大多数编程语言中,集合的数据类型必须一致.不过,对于 Python 的列表和元组来说,并无此要求 2)两者区别: 列表是动态的,长度大小不固定,可以随意地增加.删减或者改变元素(mutable) 而元组是静态的,长度大小固定,无法增加删减或者改变(immutable) 可是,如果你想对已有的元组做任何"改变",该怎么办呢?那就只能重新开辟一块内存,创建新的元组了. 3)Python 中的列表和元组都支持负数索引

python数据结构-序列之元组

python中包含六种内建的序列:列表:元组:字符串:unicode字符串:buffer对象:xrange对象. 一.元组:不可变序列 元组与列表一样,也是一种序列.唯一不同是元组不能修改(元组和列表在技术实现上有一些不同,但是在实际使用时,可能不会注意到.且元组没有像列表一样的方法). 1.创建元组:用逗号(,)分开,元组(大部分时候)是通过圆括号括起来的 >>> 1,2,3            //直接在python编辑器输入(1, 2, 3)>>> >&g

Python基础【数据结构:列表 | 元组 | 集合 | 字典】

序列 序列是Python中最基本的数据结构.包括字符串,列表,元组,Unicode字符串,buffer对象,xrange对象.序列中的每个元素都分配一个数字,即它的索引第一个索引是0,第二个索引是1,依此类推. 列表和元组 列表一个方括号内的逗号分隔值列表中可以存放不同的数据类型. 例:[1,1.2,True,'str',[2,False]]元组与列表类似,不同之处在于元组的元素不能修改.元组使用小括号,列表使用方括号. 例:(1,1.2,True,'str',[2,False]) 列表和元组的

python 数据结构类型总结

文章目录 字符串: 1.用引号来创建字符串,单双引号都可(三引号也可:三引号可以复制复杂的字符串,三引号内一个字符串可占多行,字符串中可包含换行符.制表符和其他特殊字符).eg. >>>var1 = 'Hello!'nr >>>var2 = "Hi!" 2.不支持单字符类型,单字符作为一个字符串使用.3.访问字符串的值,用方括号来截取字符串,通过索引获取字符,索引从0开始.eg. >>>var1 = 'Hello!' >>

Python(六)元组、集和、字典

?python实现数据交换的简洁方式:x,y = y,x  这样x和y的值就可以互换了. ?可变数据类型:list ?不可变数据类型:数字.字符串.元组 ?序列数据类型:字符串.列表.元组 ?无序数据类型:数字.字典 元组:带了紧箍咒的列表 元组和列表不同在于元组为不可变数据类型,他没有append等方法,存储数据更安全 一.创建: tu = (1,2,3,4) 注意:单个元组定义必须在后面加逗号,如tu = (1,) 工厂方法:t= tuple([1,2,3]) 二.元组的操作 1.元组也属于

Python数据结构之列表、元组及字典

一位大牛Niklaus Wirth曾有一本书,名为<Algorithms+Data Structures=Programs>,翻译过来也就是算法+数据结构=程序.而本文就是介绍一下Python中内建的三种数据结构----列表.元组以及字典. 列表 列表是处理一组有序项目的数据结构,即你可以在一个列表中存储一个 序列 的项目. 1.list函数 因为字符串不能像列表一样被修改,所以有时候根据字符串创建列表就很有用了,list可以实现这个操作: 1 >>>list("H

python数据结构之 列表和元组

python数据结构之 列表和元组 序列:序列是一种数据结构,它包含的元素都进行了编号(从0开始).典型的序列包括列表.字符串和元组.其中,列表是可变的(可以进行修改),而元组和字符串是不可变的(一旦创建了就是固定的).序列中包含6种内建的序列,包括列表.元组.字符串.Unicode字符串.buffer对象.xrange对象. 列表的声明: mylist = [] 2.列表的操作: (1) 序列的分片: 用法:mylist[startIndex:endIndex:step] exam: myli