Python3 元組Tuple(十二)


元組: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元組包含了以下內置函數

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM