Python基础教程:为元组中的每一个元素命名

枫铃3年前 (2021-09-30)Python254

1.原因:

当存储一个学生信息的时候使用字典是十分方便的,例如下面这样:

student = {
    'name' : "小明",
    'sex' : 'Man',
    'tel' : '123456',
    'score' : 100,
    'address' : 'xxxx'
}

因为这样可以很直观的显示出一个学生的各个信息,但是当有很多学生的时候使用元组是不是可以更简单呢?我们只需要将所有的元组元素使用相同的排列方式,例如:

s1 = ('小明', 'Man', '123456', 100, 'xxxx')

第一个元素表示名字,第二个元素表示性别,第三个元素表示电话号码,第四个元素表示分数,第五个元素表示地址.最重要的是在存储的时候元组占用的存储空间比字典少.所以当有大量数据的时候使用元组会节省大量的空间.

但是这样的话就会出现一个问题:在访问元组属性上的时候我们使用类似于s1[0],s1[2]……这些我们自己知道表示的是姓名和电话号码,但是其他阅读你代码的人知道吗?所以我们可以给元组的元素命名,这样的话就能十分直观的让阅读代码的人知道我们调用的是哪一个“属性”.

2.方法一:使用collections.namedtuple代替内置的tuple

话不多说,我们直接上代码:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# 导入namedtuple
from collections import namedtuple
# 创建一个学生“类”,名字叫student
student = namedtuple('stduent', ['name', 'sex', 'tel', 'score', 'address'])
# 创建一个namedtuple对象
s = student('小明', 'Man', '123456', 100, 'xxxx')
# 查看创建的对象
print(s)
# 判断对象的类型是不是tuple
print(isinstance(s, tuple))
# 尝试使用字典的方式调用对象属性
print(s.name)
print(s.sex)
print(s.tel)
print(s.score)
print(s.address)

注释:
新的访问namedtupyle元素的方式不再是以前的s[0],s[1]……而是在对象后面更属性名(这也是为什么我喜欢称他们为类,对象,和属性)

输出结果:

stduent(name='小明', sex='Man', tel='123456', score=100, address='xxxx')
True
小明
Man
123456
100
xxxx

3.方法二:使用枚举类型:

原本的元组可读性差的原因在于不知道元素顺序表示的含义的时候很难通过数字判断,所以我们可以使用枚举类型来代替原本属性调用时候的数字.

具体请看代码:

#导入整数枚举
from enum import IntEnum
#创建整数枚举类型
class st(IntEnum):
    name = 0
    sex = 1
    tel = 2
    score = 3
    address = 4
s = ('小明', 'Man', '123456', 100, 'xxxx')
#元素调用
print(s[st.name], s[st.sex], s[st.address], s[st.tel], s[st.score], s[st.address])

输出:

小明 Man xxxx 123456 100 xxxx

这也算是一种很直观的方式了,还有一种更简单粗暴的,那就是只给让那些数字拥有意义:创建变量name = 0,sex = 1………但是我为什么没有讲,我聪明如你只需要稍加思考就知道为啥了.

相关文章

利用python同步windows和linux文件

写python脚本的初衷,每次在windows编辑完文件后,想同步到linux上去,只能够登录服务器,...

爬虫基本原理

爬虫基本原理 一、爬虫是什么? 百度百科和维基百科对网络爬虫的定义:简单来说爬虫就是抓取目标网站内容的工具,一般是根据定义的行...

Django 函数和方法的区别

函数和方法的区别 1、函数要手动传self,方法不用传 2、如果是一个函数,用类名去调用,如果是一个方法...

Django 知识补漏单例模式

单例模式:(说白了就是)创建一个类的实例。在 Python 中,我们可以用多种方法来实现单例模式&#x...

Django基础知识MTV

Django简介 Django是使用Python编写的一个开源Web框架。可以用它来快速搭建一个高性能的网站。 Django也是一个MVC框架。但是在Dj...

Python mysql 索引原理与慢查询优化

一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。