元組:tuple。tuple和list非常類似,但是tuple一旦初始化就不能修改
元組使用小括號,列表使用方括號。
元組創建很簡單,只需要在括號中添加元素,並使用逗號隔開即可。
如下實例:
1 tup1 = ('Google', 'Runoob', 1997, 2000); 2 tup2 = (1, 2, 3, 4, 5 ); 3 tup3 = "a", "b", "c", "d";
創建空元組:
1 tup1 = ();
注意:元組中只包含一個元素時,需要在元素后面添加逗號,否則括號會被當作運算符使用
1 >>> tup1 = (50) 2 >>> type(tup1) # 不加逗號,類型為整型 3 <class 'int'> 4 5 >>> tup1 = (50,) 6 >>> type(tup1) # 加上逗號,類型為元組 7 <class 'tuple'>
元組與字符串類似,下標索引從0開始,可以進行截取,組合等。
來看一個“可變的”tuple:
1 >>> t = ('a', 'b', ['A', 'B']) 2 >>> t[2][0] = 'X' 3 >>> t[2][1] = 'Y' 4 >>> t 5 ('a', 'b', ['X', 'Y'])
不是說tuple一旦定義后就不可變了嗎?怎么后來又變了?
表面上看,tuple的元素確實變了,但其實變的不是tuple的元素,而是list的元素。tuple一開始指向的list並沒有改成別的list,所以,tuple所謂的“不變”是說,tuple的每個元素,指向永遠不變。即指向'a'
,就不能改成指向'b'
,指向一個list,就不能改成指向其他對象,但指向的這個list本身是可變的!
理解了“指向不變”后,要創建一個內容也不變的tuple怎么做?那就必須保證tuple的每一個元素本身也不能變。
訪問元組
元組可以使用下標索引來訪問元組中的值,如下實例:
1 #!/usr/bin/python3 2 3 tup1 = ('Google', 'Runoob', 1997, 2000) 4 tup2 = (1, 2, 3, 4, 5, 6, 7 ) 5 6 print ("tup1[0]: ", tup1[0]) 7 print ("tup2[1:5]: ", tup2[1:5])
以上實例輸出結果:
1 tup1[0]: Google 2 tup2[1:5]: (2, 3, 4, 5)
修改元組
元組中的元素值是不允許修改的,但我們可以對元組進行連接組合,如下實例:
1 #!/usr/bin/python3 2 3 tup1 = (12, 34.56); 4 tup2 = ('abc', 'xyz') 5 6 # 以下修改元組元素操作是非法的。 7 # tup1[0] = 100 8 9 # 創建一個新的元組 10 tup3 = tup1 + tup2; 11 print (tup3)
以上實例輸出結果:
1 (12, 34.56, 'abc', 'xyz')
刪除元組
元組中的元素值是不允許刪除的,但我們可以使用del語句來刪除整個元組,如下實例:
1 #!/usr/bin/python3 2 3 tup = ('Google', 'Runoob', 1997, 2000) 4 5 print (tup) 6 del tup; 7 print ("刪除后的元組 tup : ") 8 print (tup)
以上實例元組被刪除后,輸出變量會有異常信息,輸出如下所示:
1 刪除后的元組 tup : 2 Traceback (most recent call last): 3 File "test.py", line 8, in <module> 4 print (tup) 5 NameError: name 'tup' is not defined
元組運算符
與字符串一樣,元組之間可以使用 + 號和 * 號進行運算。這就意味着他們可以組合和復制,運算后會生成一個新的元組。
元組索引,截取
因為元組也是一個序列,所以我們可以訪問元組中的指定位置的元素,也可以截取索引中的一段元素,如下所示:
元組:
1 L = ('Google', 'Taobao', 'Runoob')
運行實例如下:
1 >>> L = ('Google', 'Taobao', 'Runoob') 2 >>> L[2] 3 'Runoob' 4 >>> L[-2] 5 'Taobao' 6 >>> L[1:] 7 ('Taobao', 'Runoob')
元組內置函數
Python元組包含了以下內置函數