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