1. 程式人生 > 實用技巧 >python基礎之元組tuple,詳解

python基礎之元組tuple,詳解

元組

元組不可改變,只要定義完成,就已經決定數值,即不可再改變,一般用來儲存一些不會改變的資料;與列表類似,列表用中括號而元組用小括號,元組不可改變而列表可以。

tuple和list非常類似,但是tuple一旦初始化就不能修改

1、定義一個元組

1 my_tuple = (32,'djsh',32)
2 print(my_tuple)

  1.1、定義空元組   

1 my_tuple = ()
2 # 或者
3 my_tuple = tuple()

  1.2、定義只有一個元素的元組

1 my_tuple = (23,)
2 # 或者
3 my_tuple = ('dsiud',)

2、通過下標索引來獲取元組裡的元素

1 my_tuple = (1,3.14,'關羽','張飛','小明')
2 # 獲取小明
3 values = my_tuple[4]
4 print(values)

3、修改元組(元組不可修改,可以將兩個元組連線成一個)

my_tuple1 = (23,323,2344)
my_tuple2 = ('dsl','dsxcii2')
# 實則是利用運算子
tup3 = my_tuple1 + my_tuple2
print(tup3)

4、刪除元組(元組不能單獨刪除某個元素,可以利用內建函式del() 刪除整個元組)

1 # 定義一個元組
2
my_tuple = (32,'233dssd',232) 3 # 利用內建函式del刪除元組my_tuple 4 del my_tuple 5 print(my_tuple)
# 最後報錯就對了,因為已經刪除掉了my_tuple,打印不出來

5、獲取元組的下標索引和檢視某個元素出現的次數

1 my_tuple = (1,32,3.14,'關於','關羽','小明','關羽')
2 # 獲取某個元素的下標索引
3 index = my_tuple.index(3.14)
4 print(index)
5 # 獲取某個元素出現的次數
6 count = my_tuple.count('關羽
') 7 print(count)

6、for迴圈與while迴圈遍歷元組

 1 my_tuple = (1,32,3.14,'關於','關羽','小明','關羽')
 2 # for迴圈遍歷
 3 for i in my_tuple:
 4     print(i)
 5 # while遍歷
 6 i = 0
 7 # 內建函式len()統計元組中元素的個數
 8 while i < len(my_tuple):
 9     print(my_tuple[i])
10     i += 1

7、另一種解讀

  7.1、任意無符號的物件,以逗號隔開,預設為元組

my_tup = 23,23,3,'dsdkjh'
print(type(my_tup))
# 結果:
# 型別為tuple
<class 'tuple'>

  7.2、tuple和list非常類似,但是tuple一旦初始化就不能修改,如:

my_tuple = (6366,'dsf','張飛')

  元組my_tuple 現在不能再改變了,沒有append(),insert()這樣的方法。其他獲取元素的方法和list是一樣的,可以正常地使用my_tuple[0],my_tuple[-1],但不能賦值成另外的元素。

  不可變的tuple有什麼意義?因為tuple不可變,所以程式碼更安全。如果可能,能用tuple代替list就儘量用tuple。

  7.3、tuple的陷阱:當你定義一個tuple時,在定義的時候,tuple的元素就必須被確定下來

my_tuple = (3, 3, 4)
print(my_tuple)
# 列印結果
(3, 3, 4)
# 定義空元組
tuple = ()
print(tuple)

  7.4、定義一個元素的元組

 1 # 定義有且只有一個數字元素的元組
 2 # 錯誤方式
 3 tuple1 = (1)
 4 print(tuple)
 5 # 列印結果
 6 1
 7 
 8 # 正確的定義方式,如下
 9 my_tuple = (2,)
10 print(my_tuple)
11 # 列印結果
12 (2,)

  上面錯誤的方式定義的不是tuple,是1這個數!這是因為括號()既可以表示tuple,又可以表示數學公式中的小括號,產生了歧義,因此,Python規定,這種情況下,按小括號進行計算,計算結果自然是1。
  所以,只有1個元素的tuple定義時必須加一個逗號,來消除歧義

  7.5、看來是可變的元組

1 my_tuple = (3,23,'',[3,'ABX'])
2 my_tuple[3][0] = 'HH'
3 print(my_tuple)

  這個元組定義的是4個元素的元組,兩個數字,一個字串,一個列表

  表面上看,tuple的元素確實變了,但其實變的不是tuple的元素,而是list的元素。

  解釋理解:tuple一開始指向的list並沒有改成別的list,所以,tuple所謂的“不變”是說,tuple的每個元素,指向永遠不變。即指向'夢',就不能改成指向'b',指向一個list,就不能改成指向其他物件,但指向的這個list本身是可變的!
  理解了“指向不變”後,要建立一個內容也不變的tuple怎麼做?那就必須保證tuple的每一個元素本身也不能變。

8、元組內建函式
  Python元組包含了以下內建函式
  1、cmp(tuple1, tuple2):比較兩個元組元素。
  2、len(tuple):計算元組元素個數。
  3、max(tuple):返回元組中元素最大值。
  4、min(tuple):返回元組中元素最小值。
  5、tuple(seq):將列表轉換為元組。

參考:https://www.cnblogs.com/still-smile/p/11586452.html