Python基础教程:为元组中的每一个元素命名
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 xxxx3.方法二:使用枚举类型:
原本的元组可读性差的原因在于不知道元素顺序表示的含义的时候很难通过数字判断,所以我们可以使用枚举类型来代替原本属性调用时候的数字.
具体请看代码:
#导入整数枚举 from enum import IntEnum #创建整数枚举类型 class st(IntEnum):name = 0sex = 1tel = 2score = 3address = 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………但是我为什么没有讲,我聪明如你只需要稍加思考就知道为啥了.
与50位技术专家面对面20年技术见证,附赠技术全景图总结
以上是生活随笔为你收集整理的Python基础教程:为元组中的每一个元素命名的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: python实现进度条的3种方式
- 下一篇: python 处理 json 四个函数d