有了列表,為什麼 python 還有元組?
python中有乙個基礎的資料結構,叫做元組(tuple),但是一般挺少有人會去用它的,因為在開發過程中,列表(list)基本已經能夠滿足我們的需求。
即使是這樣,你也千萬不要就此認為元組是多餘的。不然在面試中也不會經常被人問,元組和列表有啥區別?為什麼需要元組?
以下兩點,第一點是大家所熟知的,而第二點可能只有老司機才會知道,只有學習了第二點,才算真正理解了元組存在的價值和意義。
不可變列表#
這是元組區別於列表最顯著的特徵。
list:可變的序列
tuple:不可變的序列
那什麼是不可變的序列呢?
那就是在元組物件生成後,諸如列表的插入元素、刪除元素、新增元素、清空元素、修改元素等功能,在元組中通通沒有,你是無法對其進行修改的。
由於元組是不可變的,所以其方法也是很有限的。這裡羅列一下。
copycopy
s1=(1,2,3)
s2=(4,5,6)
s1+s2
s1.add(s2)
2 in s1
s1.contains(2)
s1.count(2)
s1[0]
s1.getitem(0)
s1.index(2)
len(s1)
s1*n
2. 具名元組#
這個特性,我個人認為,才是元組存在的意義所在。
只講 具名元組,可能不太好理解。如果稱之為 帶欄位名的記錄,你可能就清楚了。
這裡舉個例子,但是實現帶欄位名,需要乙個庫(collections)的支援,你需要匯入它。
copycopy
from collections import namedtuple
city = namedtuple(「city」, 「name country polulation coordinates」)
tokyo = city(「tokyo」, 『jp』, 『36.93』, (『35.68』,『139,69』))
print(tokyo)
print(tokyo.name)
看著有點像字典,是不是,但是他不是字典(獲取數值的方法也與字典不同),字典是可變。元組在建立後,就無法再對其進行修改。這在某個程度上說明元組適合存放那些無需修改的資料。比如上面的,地名,國家,經緯度。
除了上面的用法之處,這裡還要介紹一些元組自己專有的屬性。
copycopy
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)
xiamen_dict = xiamen._asdict()
print(xiamen_dict)
這本書一共將近 200 頁,內含大量的**,製作之精良,值得每個 python 工程師 人手乙份。
微控制器中為什麼有了Flash還有EEPROM?
時,然後才能再下一次,這麼折騰一天也改不了幾次。歷史的車輪不斷前進,偉大的eeprom 出現了,拯救了一大批程式設計師,終於可以隨意的修改rom中的內容了。eeprom的全稱是 電可擦除可程式設計唯讀儲存器 即electrically erasable program mable read only...
微控制器中為什麼有了Flash還有EEPROM?
flash flash屬於廣義的eeprom,因為它也是電擦除的rom。但是為了區別於一般的按位元組為單位的擦寫的eeprom,我們都叫它flash。既然兩者差不多,為什麼微控制器中還要既有flash又有eeprom呢?通常,微控制器裡的flash都用於存放執行 在執行過程中不能改 eeprom是用...
微控制器中為什麼有了Flash還有EEPROM?
時,然後才能再下一次,這麼折騰一天也改不了幾次。歷史的車輪不斷前進,偉大的eeprom 出現了,拯救了一大批程式設計師,終於可以隨意的修改rom中的內容了。eeprom的全稱是 電可擦除可程式設計唯讀儲存器 即electrically erasable program mable read only...