元組的定義:元組是有序的,不可修改的,以逗號分隔的,以小括號包圍的序列,可以通過**()和tuple()**函數定義,不能修改,只有在定義的一瞬間修改。
A = (1,2,3)#這就是一個元組
優點:
num = (1,2,3,'ad')
print(num)
type(num)
(1, 2, 3, 'ad')
tuple
如果我們元組裡面只放一個數據:
num = (2)
type(num)
int
這裡,我們定義的元組,最後卻成了一個int型數據。如果重新定義一種形式:
num1 = ('a')
type(num1)
最後輸出的結果也是字符串str類型,那麼,這是為什麼呢?
Python中的()同樣也表示數學運算的一個基本符號,比如(1+1)*2,所以這就和元組的這個小括號產生了歧義,當元組中只有一個元素,而又沒有逗號的時候,它會把這元素運算出來,這個小括號會被Python解釋器識別為一個運算符號,所以得到的是那個元素本身的數據類型。
所以,為了解決這個問題,我們只需在定義元組的元素後面加上一個逗號就可以消除這種情況。
num = (2,)
type(num)
tuple
元組中元素的訪問:
元組中對於元素的訪問依然是按照索引來訪問的。
num = (1,2,3,'jk','hy')
print(num[0])
print(num[1])
1
2
修改元組:
前面說到,元組是不可變的,也就是說,元組中的元素在被賦值後不能改變。但是,如果元素本身是一個可變數據類型的列表,那麼其嵌套項可以被改變。
例如:
num = (1,2,[7,8])
print(num)
num[2].append(3)
print(num)
(1, 2, [7, 8])
(1, 2, [7, 8, 3])
如果我們試著改變一下元組內元素的值:
num = (1,2,[7,8])
print(num)
num[2][1] = 'jk'
print(num)
(1, 2, [7, 8])
(1, 2, [7, 'jk'])
如果我們在元組內嵌套一個列表,我們也是只能對列表內的數據進行增刪。
tuple()函數:
tuple函數的功能與list函數基本上一樣的,以一個序列作為參數並把它轉換為元組,如果參數是元組,那麼該參數就會被原樣返回。
num1 = [2,3,4,'jk']
num1 = tuple(num1)#列表變元組
print(num1)
str1 = 'beautiful'
str1 = tuple(str1)#字符串變元組
print(str1)
(2, 3, 4, 'jk')
('b', 'e', 'a', 'u', 't', 'i', 'f', 'u', 'l')
元組的索引也是和訪問列表與字符串完全一致的。
嵌套元組的訪問方式:這種方式其實與c語言的矩陣訪問方式差不多的。
num = ((1,'jk'),(2,'hy'),(3,'aj'))
print(num[0][1])
print(num[1][1])
jk
hy
元組的查找
index 從左往右返回第一個遇到的指定元素的索引,如果沒有,報錯
num = (1,2,3,'jk','hy')
num.index(2)
1
count 返回元組當中指定元素的個數
num = (1,2,3,'jk','hy')
num.count(3)
1
python元組與列表的區別
1、元組和列表都是有序的,元組不可修改,列表可修改。
2、元組和列表的元素可以是任何類型
3、元組的元素長度可以任意。