Python 提供的元組與列表類似,不同之處在于元組的元素不能修改。雖然有時候很方便,但因為不能為元組內(nèi)部的數(shù)據(jù)進行命名,所以沒有那么直觀。
成都創(chuàng)新互聯(lián)公司服務(wù)項目包括巴東網(wǎng)站建設(shè)、巴東網(wǎng)站制作、巴東網(wǎng)頁制作以及巴東網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,巴東網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到巴東省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
Python 引入了 collections.namedtuple 這個工廠函數(shù),用來構(gòu)造一個帶字段名的元組。
(1)聲明與實例化
我們一般這樣來構(gòu)造具名元組:
下面是聲明一個具名元組及其實例化方法的示例:
運行結(jié)果:
這里通過 collections.namedtuple 創(chuàng)建了一個具名元組,用來表示一張撲克牌。rank 表示撲克牌點數(shù),suit 表示花色??梢酝ㄟ^字段名或者位置來實例化一個具名元組。這里的 select_card 表示抽到一張黑桃 10。
(2)特有屬性與方法
具名元組還擁有以下這些特有的屬性與方法。
運行結(jié)果:
另外,通過 . 語法還可以獲取具名元組中所對應(yīng)的屬性值:
運行結(jié)果:
所以這篇文章,我們先來回顧和總結(jié)Python數(shù)據(jù)結(jié)構(gòu)里常用操作。Python中常見的數(shù)據(jù)結(jié)構(gòu)可以統(tǒng)稱為容器(container)。序列(如列表和元組)、映射(如字典)以及集合(set)是三類主要的容器。而扁平序列如str、bytes、bytearray、memoryview 和 array.array等不在這篇文章的討論范圍內(nèi)。
在此,我們先從元組開始說起。
元組區(qū)別于列表的顯著特征之一就是它不能被修改,但其另外一個作用就是 用于沒有字段名的記錄 [1] 。因為后者經(jīng)常被忽略,我們先來看看元組作為記錄的作用。
使用括號就可以定義一個元組。元組中的每個元素都存放了記錄中一個字段的數(shù)據(jù),外加這個字段的位置。正是這個位置信息給數(shù)據(jù)賦予了意義。下面的例子中,元組就被當(dāng)作記錄加以利用:
輸出為:
上述for循環(huán)中的操作提取了元組中的元素,也叫作拆包(unpacking)。平行賦值是對元組拆包很好的應(yīng)用,示例如下:
還有一個經(jīng)典而優(yōu)雅的應(yīng)用是交換變量的值:
用 * 運算符把一個可迭代對象拆開作為函數(shù)的參數(shù),例如Python的內(nèi)置函數(shù)pmod接收兩個數(shù)字類型的參數(shù),返回商和余數(shù)。以下范例將使用 * 將元組傳入函數(shù)。
輸出為:
有些函數(shù)有多個返回值,將其賦給一個變量時,變量類型即是元組:
輸出為:
zip是Python的內(nèi)置函數(shù),能夠接收兩個或多個序列,并組成一個元組列表,在Python3中會返回一個迭代器,如下所示:
輸出為:
元組當(dāng)然也支持一些常規(guī)操作,如對于元組 a = (1, 'y', 5, 5, 'x') :
上述內(nèi)容不僅涵蓋了元組的基本操作,同時也結(jié)合了實際工作中常搭配使用的其他函數(shù)、運算符等。在回顧這些知識時主要參考了兩本經(jīng)典的Python編程書籍:《流暢的Python》和《像計算機科學(xué)家一樣思考Python》,有興趣的朋友可以深入閱讀!
希望這篇文章對你有幫助,下回將總結(jié)Python列表的使用技巧。
[1]《流暢的Python》:
Python中有六個標(biāo)準(zhǔn)的數(shù)據(jù)類型:Number(數(shù)字),String(字符串),List(列表),Tuple(元組),Set(集合),Dictionary(字典)。其中:Number(數(shù)字)、String(字符串)、Tuple(元組)是不可變數(shù)據(jù),其余三種是可變數(shù)據(jù)。
轉(zhuǎn)義字符
輸出結(jié)果
布爾值
布爾值是一個邏輯值,只有真(True)和假(False)
輸出結(jié)果
Python數(shù)據(jù)結(jié)構(gòu)包括列表(list)、元組(tuple)、集合(set)、字典(dict)等,這里主要講解列表,列表有兩個特點:
輸出結(jié)果
修改表中元素
輸出結(jié)果
列表中插入元素
輸出結(jié)果
輸出列表中的元素
輸出結(jié)果
元素是否在列表元素中及統(tǒng)計個數(shù)
輸出結(jié)果
查找某個元素在列表中的位置
輸出結(jié)果
順序結(jié)構(gòu)
輸出結(jié)果
if 條件 1
輸出結(jié)果
if 條件 2
輸出結(jié)果
循環(huán)結(jié)構(gòu)
輸出結(jié)果
循環(huán)語句求和
輸出結(jié)果
可重復(fù),類型可不同。 類型不同也是跟數(shù)組最本質(zhì)的區(qū)別。 python里的列表用“[]”表示:
對比a和b的結(jié)果
列表的 --- 增 -- 刪 -- 改 -- 查
循環(huán)輸出列表內(nèi)容,在結(jié)尾添加指定的內(nèi)容
字符串是 Python 中最常用的數(shù)據(jù)類型。 我們可以使用引號('或")來創(chuàng)建字符串。
元組與列表相似,不一樣之處在于 元組的元素不能修改。
元組使用小括號,列表使用方括號。
元組建立很簡單,只須要在括號中添加元素,并使用逗號隔開便可。
字典是另外一種可變?nèi)萜髂P?,且可存儲任意類型對象?/p>
字典的每一個鍵值(key=value)對用冒號(:)分割,每一個對之間用逗號(,)分割,整個字典包括在花括號({})中 ,格式以下所示:
d = {key1 : value1, key2 : value2 }
字典函數(shù)
集合(set)是一個 無序的不重復(fù)元素序列。
可使用大括號 { } 或者 set() 函數(shù)建立集合,注意:建立一個空集合必須用 set() 而不是 { },由于 { } 是用來建立一個空字典。
它的主要做用以下: 1.去重,把一個列表變成集合,就自動去重了 。2.關(guān)系測試,測試兩組數(shù)據(jù)以前的交集、差集、并集等關(guān)系。
關(guān)系測試
輸出結(jié)果
元素的添加和刪除
python三種核心數(shù)據(jù)結(jié)構(gòu)如下:
1、列表。list是處理一組有序項目的數(shù)據(jù)結(jié)構(gòu),即你可以在一個列表中存儲一個序列的項目。列表中的項目。列表中的項目應(yīng)該包括在方括號中,這樣python就知道你是在指明一個列表。一旦你創(chuàng)建了一個列表,你就可以添加,刪除,或者是搜索列表中的項目。由于你可以增加或刪除項目,我們說列表是可變的數(shù)據(jù)類型,即這種類型是可以被改變的,并且列表是可以嵌套的。
2、元組。元組和列表十分相似,不過元組是不可變的。即你不能修改元組。元組通過圓括號中用逗號分隔的項目定義。元組通常用在使語句或用戶定義的函數(shù)能夠安全的采用一組值的時候,即被使用的元組的值不會改變。元組可以嵌套。
3、字典。字典類似于你通過聯(lián)系人名稱查找地址和聯(lián)系人詳細情況的地址簿,即,我們把鍵(名字)和值(詳細情況)聯(lián)系在一起。注意,鍵必須是唯一的,就像如果有兩個人恰巧同名的話,你無法找到正確的信息。
學(xué)習(xí)Python的注意事項。
1、打好基礎(chǔ)。已經(jīng)選擇了Python這一門學(xué)科,就要堅定學(xué)下去的決心,打好基礎(chǔ)很重要。也許一開始會覺得這也不懂那也不懂,硬著頭皮堅持下去。因為Python是一個有條理的、強大的面向?qū)ο蟮某绦蛟O(shè)計語言,學(xué)好基礎(chǔ)知識是前提。
2、Python的基礎(chǔ)知識包括:下載、安裝、導(dǎo)入庫、字符串處理、函數(shù)使用等等。如果你的英語不是很好,可以通過“譯中文文檔”這個網(wǎng)站進行翻譯整理。當(dāng)然翻譯很麻煩,如果想省掉翻譯環(huán)節(jié),可以報一個培訓(xùn)班,進行中文無障礙教學(xué)。
元組是不可變的,即元組的項不能被修改。元組用圓括號“()”括起來,并用逗號“,”來分隔其中的項。
例如,下面的元組包含了三個不同數(shù)據(jù)類型的項:
與列表不同的是,元組一旦創(chuàng)建就不可修改,如果嘗試修改,Python解釋器會報錯:
元組是一種序列類型,因此,上一節(jié)介紹的通用序列操作元組也都支持,此處不再贅述。下面要介紹的是元組的另外一些用法或特性。
1、 創(chuàng)建元組
在創(chuàng)建元組時,可以不用加圓括號(除非它是其他數(shù)據(jù)類型的一部分,如一個在列表中的元組,此時必須加圓括號):
可以使用元組的工廠函數(shù)tuple()創(chuàng)建元組。如果要創(chuàng)建一個空的元組,可以使用不包含任何項的圓括號或者是沒有參數(shù)的tuple()函數(shù):
tuple()函數(shù)也可以有參數(shù),且參數(shù)必須為可迭代對象:
創(chuàng)建只有一個項的元組時有個“小陷阱”,即用圓括號創(chuàng)建元組時,如果括號中只有一個項,而沒有逗號,那么創(chuàng)建的并不是元組,而是這個項本身的類型:
創(chuàng)建只有一個項的元組,應(yīng)該在該項的后面緊跟著一個逗號(或者使用tuple()函數(shù)):
2、 嵌套元組
元組與列表一樣,可以嵌套,同樣元組中也可以包含列表:
關(guān)于Python的基礎(chǔ)問題可以看下這個網(wǎng)頁的視頻教程,網(wǎng)頁鏈接,希望我的回答能幫到你。
Python列表及元組的相同點
1. 索引相同,從左到右都為0~n-1;
2. 拼接相同,都可以用+拼接;
3. 計數(shù)相同,都使用len()函數(shù)統(tǒng)計元素個數(shù)、使用count()函數(shù)統(tǒng)計指定元素的出現(xiàn)次數(shù);
4. 都屬于有序序列;
5. 都可以使用del刪除;
6. 都可以使用*來使本身重復(fù);
7. 可以強制轉(zhuǎn)換且切片方法一致;
8. 都可以使用for循環(huán)來進行元素遍歷、索引遍歷以及枚舉遍歷;
9. 使用index()方法獲取指定元素的索引;
10. 使用運算符in測試是否包括某個元素。
Python列表及元組的不同點
1. 類型不同,元組類型為tuple,列表類型為lsit;
2. 修改方式不同,元組不能修改,列表可以根據(jù)索引來修改元素值;
3. 刪除方式不同,列表使用pop()等函數(shù)刪除元素,而元組不能刪除元素,只能用del刪除整個元組;
4. 查找方式不同,列表只能用Index()函數(shù)來查看,元組只能用index()函數(shù)來查看。