Python基础|理解元组存在的意义
Python中有一個基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),叫做元組(tuple),但是一般挺少有人會到到它的,因為基本上在開發(fā)過程中,列表(list)已經(jīng)能夠滿足我們的基本需求了。
即使是這樣,你也千萬不要就此認(rèn)為元組是多余的。不然在面試被人問,元組和列表有啥區(qū)別?為什么需要元組?你就懵了。
在這里,小明總結(jié)了以下兩點(diǎn),第一點(diǎn)是大家所熟知的,而第二點(diǎn)可能只有老司機(jī)才會知道,而只有學(xué)習(xí)了第二點(diǎn),才算真正理解了元組存在的價值和意義。
01不可變列表
這是元組區(qū)別于列表最顯著的特征。
list:可變的序列
tuple:不可變的序列
那什么是不可變的序列呢?
那就是在元組對象生成后,諸如列表的插入元素、刪除元素、添加元素、清空元素、修改元素等方法,在元組中通通沒有,你無法對其進(jìn)行修改、刪除,你只能獲取。
由于元組是不可變的,所以其方法也是很有限的。這里羅列一下。
# s1和s2都是元組 s1=(1,2,3) s2=(4,5,6)# 拼接生成新元組 s1+s2 s1.__add__(s2)# 是否包含 2 in s1 s1.__contains__(2)# 統(tǒng)計元素包含的次數(shù) s1.count(2)# 獲取元素 s1[0] s1.__getitem__(0)# 找到2第一次出現(xiàn)的索引 s1.index(2)# 獲取長度 len(s1)# 重復(fù)拼接 s1*n02具名元組
這個特性,我個人認(rèn)為,才是元組存在的意義所在。
只講 具名元組,可能不太好理解。如果稱之為 帶字段名的記錄,你可能就清楚了。
這里舉個例子,但是實現(xiàn)帶字段名,需要一個庫(collections)的支持,你需要導(dǎo)入它。namedtuple是一個工廠函數(shù)。
from collections import namedtuple # 生成一個City類 City = namedtuple("City", "name country polulation coordinates") # 實例化 tokyo = City("Tokyo", 'JP', '36.93', ('35.68','139,69'))print(tokyo) # City(name='Tokyo', country='JP', polulation='36.93', coordinates=('35.68', '139,69'))print(tokyo.name) # Tokyo看著有點(diǎn)像字典,是不是,可惜他不是字典(獲取數(shù)值的方法也與字典不同),字典是可變。元組在創(chuàng)建后,就無法再對其進(jìn)行修改。這在也說明元組適合存放那些無需修改的數(shù)據(jù)。比如上面的,地名,國家,經(jīng)緯度。
除了上面的用法之處,這里還要介紹一些元組自己專有的屬性。
# 打印字段名 print(City._fields) ('name', 'country', 'polulation', 'coordinates')# 生成新實例 LatLong = namedtuple('LatLong', 'lat long') Xiamen_tuple = ('Xiemen', 'China', '40,54', LatLong(24.26,118.03)) Xiamen = City._make(Xiamen_tuple)print(Xiamen) # City(name='Xiemen', country='China', polulation='40,54', coordinates=(24.26, 118.03))# 將具名元組轉(zhuǎn)為OrderDict Xiamen_dict = Xiamen._asdict() print(Xiamen_dict) # OrderedDict([('name', 'Xiemen'), ('country', 'China'), ('polulation', '40,54'), ('coordinates', LatLong(lat=24.26, long=118.03))])總結(jié)一下,元組是一種很強(qiáng)大的可以當(dāng)作記錄來用的數(shù)據(jù)類型,這才是他存在的價值和意義所在。而為人所熟知的,它的第二個角色才是充當(dāng)一個不可變的列表。
如果你想學(xué)習(xí)自動化測試、性能測試、測試開發(fā),但是自己又非常的迷茫,沒有思路又怕耽誤時間,那么你可以找我。我非常愿意將自己從業(yè)10年的經(jīng)驗傳授給你,也愿意將自己獨(dú)家的核心教程免費(fèi)贈送。
公眾號【程序員阿沐】找到我!我一直在等著你!
總結(jié)
以上是生活随笔為你收集整理的Python基础|理解元组存在的意义的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于励志书及推荐《高效能人士的七个习惯》
- 下一篇: 英雄杀_商鞅变法