Python基礎數據類型學習1:元組

一、元組的簡介

元組是個有序的序列,其中包含0至多個對象引用,元組是固定的,因此,不能替換或刪除其中包含的數據項。如果我們需要修改一個元組,可以使用list()函數將其轉換為列表,然后再對列表進行修改,最后通過使用tuple()再轉換為元組。

二、元組的創建

空元組可使用空圓括號()創建,也可以使用tuple()函數進行創建。包含一個或多個項的元組則使用逗號分隔進行創建。有時,為避免語義的二義性,必須將元組包含在圓括號內。例如將元組傳遞給函數或用函數創建元組時,應寫成function((1,2,3))和tuple((1,2,3))。
示例:

>>>a=()  #創建空元組
>>>b=tuple()  #利用函數創建空元組
>>>c=1,2,3  #創建含項的元組
>>>d=(1,2,3)  #創建含項的元組
>>>e=tuple((1,2,3))  #利用函數創建含項的元組
>>>f=[1,2,3]
>>>g=tuple(e)  #利用tuple()函數將列表轉換為元組

三、元組的操作

(一)元組項的讀取

我們首先創建一個示例元組:

>>>stu=('zhang','上海',16,'181厘米','足球')
>>>stu
('zhang','上海',16,'181厘米','足球')
stu[-5] stu[-4] stu[-3] stu[-2] stu[-1]
‘zhang' '上海' 16 '181厘米' '足球'
stu[0] stu[1] stu[2] stu[3] stu[4]

表:元組的索引位置
我們就可以通過索引位置來讀取元組中具體項的內容:

>>>stu[0]
'zhang'
>>>stu[-1]
'足球'
>>>stu[4]
’足球'

利用索引位置我們一次只能讀取一個項的內容,要讀取多項的內容我們可以使用分片。示例:

>>>stu[2:]  #讀取從第三項開始的所有項的內容,與stu[-3:]的效果一樣
(16,'181厘米','足球')
>>>stu[-3:]
(16,'181厘米',‘足球')
>>>stu[1:3]  #讀取第二,第三項的內容
('上?!?,16)
>>>stu[:]  #讀取所有項內容
('zhang', '上海', 16, '181厘米', '足球')

(二)元組的其它操作

元組除了可以使用分片操作,還可以使用+(連接)和*(賦值)操作符。同時也可以使用in與not in來測試成員的關系。元組也可以使用比較操作符(<、<=、==、!=、>=、>)進行比較,比較是逐項進行的。
示例:

>>>a=(1,2)
>>>b=(1,2)
>>>c=(1,2,3)
>>>a==b
True
>>>a!=b
False
>>>a>c
False
>>>a=a*5  #此操作并不是改變元組的值,而是生成一個新的元組,再將a指向新的元組
(1,2,1,2,1,2,1,2,1,2)
>>>newstu=stu[:2]+('高中',)+stu[2:]  #使用+連接符生成一個新的元組
>>>newstu
('zhang', '上海', '高中', 16, '181厘米', '足球')

(三)元組的方法

元組只提供了兩種方法:count(x),返回對象x在元組中出現的次數;index(x),返回對象在元組中從左邊算起第一次出現的位置,如果元組中不包含x時,則產生一個ValueError異常。
示例:

>>>a.count(1)
1
>>>a.index(2)
1
>>>a.index(3)
Traceback (most recent call last):
  File "<pyshell#102>", line 1, in <module>
    a.index(3)
ValueError: tuple.index(x): x not in tuple

(四)元組的嵌套

在一個元組內可以有多層嵌套的元組。任何嵌套層次的元組都可以使用上述的方式進行創建,也可以使用分片等方法。
示例:

>>>colors=('green','blue','red','yellow','gray')
>>>hair=('long',colors)
>>>hair  #hair里面還嵌套一個元組
('long',('green','blue','red','yellow','gray'))
>>>hair[0]  #取元組第一個項值
'long'
>>>hair[1][2]  #取元組中第二項中的第三項值
'red'
>>>hair[1][2:-1]
('red','yellow')

四、命名的元組

根據索引位置選取元組中的項有時會非常不便 ,有時特別是在對付一些復雜嵌套結構的元組時會很容易造成混亂,我們可以使用collections模塊的namedtuple()函數來實現根據名稱引用元組中的項。
示例:

>>>import collections
>>>stu=collections.namedtuple("stu","name age high hobby")

collections.namedtuple()中的第一個參數是要創建的自定義元組數據類型的名稱,第二個參數是一個字符串,字符串中包含元組中每一項的名稱,中間用空格間隔。這里我們就創建了一個名為stu的自定義元組數據類型,下面我們就可以對其進行引用了。

>>>NO1=stu("zhang",16,"181厘米","足球")
>>>NO1.name
'zhang'
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,578評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,701評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,691評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,974評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,694評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,026評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,015評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,193評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,719評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,442評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,668評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,151評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,846評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,255評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,592評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,394評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內容