Python 元組,不可變的列表,滾雪球學 Python
今天新學習的概念叫做元組,其實學元組還是離不開列表,第一個知識點是元組的英文 tuple 要牢牢記住,第一個知識點是元組與列表的區別,列表的元素可以修改,元組的元素不可以修改,所以元素又可以稱為不可變的列表。
列表用中括號 [] 進行定義,元組用小括號 () 進行定義,元組的語法格式如下:
# my_tuple 是元組變數名,可以任意命名
my_tuple = (元素1,元素2,元素3...)
元組中的每一個資料也稱為元素,元素也可以是數字、字串或者列表等內容,輸出使用 print 函式即可。
特別注意如果元組內的元素只有一個,需要在定義的時候在元素的右側增加一個英文逗號 ,,例如:
# 只有一個元素
my_tuple = (元素1,)
下面就在 PyCharm 中進行一下實際的編碼吧。
# 宣告一個元組物件
my_tuple = (1, 2, 3)
print(my_tuple)
print(type(my_tuple))
# 宣告一個元組物件
my_tuple1 = ("www", "aaa", "ggg")
print(my_tuple1)
print(type(my_tuple1))
# 宣告只有一個元素的元組物件
my_tuple2 = ("www", )
print(my_tuple2)
print(type(my_tuple2))
有列表在前,該部分學期起來就比較簡單了,在元組中獲取元素也是透過中括號 [] 加上索引的方式,與列表保持一致。
列表也可以透過迴圈去輸出,可以自行透過 for 迴圈進行嘗試。
列表中的元素可以透過索引去修改,但是元組不可以,以下程式碼會出現錯誤。
# 宣告一個元組物件
my_tuple = ("www", "aaa", "ggg")
my_tuple[1] = "good"
print(my_tuple)
該錯誤提示如下:
TypeError: 'tuple' object does not support item assignment
原因為本篇部落格開始提及的元組不允許修改元素,上述錯誤翻譯之後表示 tuple 物件不支援賦值。
由於元組與列表太相似了,接下來的一些知識點只做簡單羅列。
切片適用於元組
列表方法中不涉及修改列表元素的方法都可用於元組,例如 len,count …,如果列表方法會對元素進行修改,那不可用於元組,例如 append, insert… 如果想詳細查閱,回憶 dir 方法。
部分列表可用的內建函式同樣適用於元組,例如 max、min…
在開發程式碼的過程中,有時需要對列表與元組進行相互轉換,該轉換類似之前學習過的強制轉換的過程,核心的內建函式為 list 與 tuple。
將元組修改為列表。
my_tuple = ("www", "aaa", "ggg")
my_list = list(my_tuple)
print(my_list)
將列表修改為元組。
my_list = ["www", "aaa", "ggg"]
my_tuple = tuple(my_list)
print(my_tuple)
函式 zip 可以將一個可迭代物件,如列表打包成元組,打包之後返回的是一個 zip 物件,說起來有點繞,而且應用的場景不是很明確,可以先看程式碼學習一下。
en_names = ["apple", "orange", "pear"]
cn_names = ["蘋果", "橘子", "梨"]
zipData = zip(en_names, cn_names)
print(zipData) # 列印 zipData
print(type(zipData)) # 列印 zipData 資料型別
print(list(zipData)) # 輸出 zipData 中的資料內容
輸出結果:
[('apple', '蘋果'), ('orange', '橘子'), ('pear', '梨')]
透過程式碼你可以看到,zip 把兩個列表的資料合併了,每個列表中對應索引位置的元素合併在了一個元組裡面。上述程式碼中就出現了 apple 與 蘋果 對應,orange 與 橘子 對應,pear 與 梨 對應。
如果放在 zip 函式的列表引數長度不相同,那 zip 會選擇元素最少的那個列表作為依據,形成對應關係。
en_names = ["apple", "orange"]
cn_names = ["蘋果", "橘子", "梨"]
zipData = zip(en_names, cn_names)
print(zipData) # 列印 zipData 大連無痛人流醫院
print(type(zipData)) # 列印 zipData 資料型別
print(list(zipData)) # 輸出 zipData 中的資料內容
該程式碼第一個列表有 2 個元素,第二個列表有 3 個元素,最終輸出的結果為:
[('apple', '蘋果'), ('orange', '橘子')]
如果在 zip 中的引數前面增加 * 符號,相當於解壓,返回二維矩陣式。
程式碼如下:
en_names = ["apple", "orange"]
cn_names = ["蘋果", "橘子", "梨"]
zipData = zip(en_names, cn_names)
print(zipData) # 列印 zipData
unzipData = zip(*zipData)
print(unzipData) # 列印 unzipData
print(list(unzipData)) # 列印 unzipData 內容
元組既然與列表這麼相似,那為何 Python 還要專門設計一個元組資料型別來呢?
相比於列表,元組有如下優點。
因為其不可修改,可以保護資料;
元組在底層資料結構上比列表簡單,佔用的資源少,程式執行速度快;(說了也不用記住的知識)
元組很多時候回用作函式的返回值。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70005147/viewspace-2787147/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python 學習之元組列表Python
- Python3學習 (變數+值型別+引用型別+列表的可變+元組的不可變+運算子號)Python變數型別
- python元組和列表Python
- Python列表、元組、字典使用Python
- Python中列表、元組、字典有何區別?Python學習!Python
- Python學習筆記8——列表、字典、元組Python筆記
- python_列表——元組——字典——集合Python
- Python之列表&元組小練Python
- python list列表基礎(元組)Python
- python如何返回元組,列表或字典的?Python
- Python元組、列表、集合及列表去重操作Python
- python資料型別 列表+元組Python資料型別
- python 元組,列表 迴圈遍歷Python
- python學習筆記:第4天 列表和元組Python筆記
- python 元組與列表的異同點 1125Python
- Python 元組列表排序:初學者可能忽視的細節Python排序
- python列表(list)和元組(tuple)詳解Python
- Python之列表與元組的區別詳解Python
- 三、python的資料型別 列表、元組、字典Python資料型別
- Python 選列表 list 還是元組 tuple 的思考Python
- Python中的不可變集合Python
- Python 列表、元組、字典及集合操作詳解Python
- python中的列表和元組有什麼區別Python
- python基礎之序列型別的方法——列表&元組Python型別
- Python 學習之元組Python
- python的元組Python
- 豬行天下之Python基礎——3.2 列表 & 元組Python
- Python - 可變和不可變物件Python物件
- 從零開始學Python:第十三課-列表和元組的應用Python
- Python列表及元組的相同點與不同點介紹Python
- Python資料型別(數字,字串,[列表],(元組),{字典:字典值},{列表,列表2})Python資料型別字串
- Python 元組Python
- Python基礎:資料型別-列表與元組(6)Python資料型別
- Python多維列表(元組)合併成一維形式Python
- 列表、元組、字串是有序序列嗎?Python基礎教程字串Python
- Python可變物件和不可變物件Python物件
- Python3之字串str、列表list、元組tuple的切片操作Python字串
- Python中可變物件和不可變物件的區別?Python基礎Python物件