元組(Tulpe)是Python中另外的一種數(shù)據(jù)類型窝稿,和列表(List)一樣也是一組有序?qū)ο蟮募献N牛蟛糠值膶傩院土斜恚↙ist)一樣奕谭,接下來我們來看看仪缸,Python中為什么會存在元組贵涵,以及他和列表(List)不一樣的地方
定義一個元組
a=(1,2,3,4)
print(type(a))
# 輸出 tuple
b=(1,True,0,'Apple',[1,2,[1,3]])
print(type(b))
# 輸出 tuple
元組和列表的相同點(diǎn)
- 和列表一樣元素也可以通過索引和切片的方式訪問元素
a=(1,True,0,'Apple',[1,2,[1,3]])
# 通過索引訪問
print(a[2])
# 輸出 0
print(a[-1])
# 輸出 [1,2,[1,3]]
# 通過切片訪問
print(a[0:2])
# 輸出 (1,2)
print(a[:-1])
# 輸出 (1, True, 0, 'Apple')
- 通過 +恰画、* 添加元素
a=(1,2,3)
a+=(4,5,6)
print(a)
# 輸出 (1,2,3,4,5,6)
b=a*3
print(b)
# 輸出 (1, 2, 3, 1, 2, 3, 1, 2, 3)
- 同樣適用于元組的一些內(nèi)置函數(shù)
a=(1,2,3)
# 判斷一個元素是否存在于元組中
print(1 in a)
# 輸出 True
# 獲取元組的長度
print(len(a))
# 輸出 3
# 獲取元組中最大元素
print(max(a))
# 輸出 3
# 獲取元組中最小元素
print(min(a))
# 輸出 1
# 獲取元組中元素的下標(biāo)
print(a.index(3))
# 輸出 2
# 獲取元組中元素的個數(shù)
print(a.count(2))
# 輸出 1
# 計算元組中元素的和
print(sum(a))
元組和列表有什么區(qū)別
看到元組的定義和訪問元素的方式宾茂,你可能會很困惑,別人家的語言都沒這個數(shù)據(jù)類型锣尉,Python這不是找事嗎刻炒?為什么要設(shè)計一個和列表一樣屬性的數(shù)據(jù)類型,老子是真學(xué)不動啦自沧!先別急,你只需記住以下幾點(diǎn)即可。
- 列表定義的時候使用[ ],元組使用( )
- 列表可以改變的拇厢,但是元組不可變爱谁,也就是元組定義好以后我們不能修改里面的元素
- 能使用元組的盡量使用元組
元組不能改變是什么意思
我們通過簡單的代碼演示一下數(shù)組的不可變性
a=(1,2,3,4,5)
a[0]=10
# 這個時候會拋出異常
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
因?yàn)樵M中的元素不能修改,所以元素的沒有append( )孝偎、insert( )等修改方法
刪除元組
之前分享列表的時候提到刪除列表的方法有很多访敌,可以使用del、clear( )衣盾、remove( )寺旺、pop( ), 但是元組因?yàn)椴荒苄薷乃灾荒苁褂胐el清空元組,下面通過代碼演示一下
a=(1,2,3,4)
# 刪除元組
del a
元組的一些坑
- 定義一個元素的元組
# 定義一個元素的列表
print(type([1]))
# 輸出 list
# 定義一個元素的元組
print(type((1)))
# 輸出 int
# 因?yàn)? ) 在python中是數(shù)學(xué)運(yùn)算符號
# 正確的做法是在元素后面添加一個逗號
print(type((1,)))
# 輸出tuple
- 元組中的元素‘可變’
前面一直說元組中的元素不能修改,下面我們來演示一下元組中的元素可以修改
a=(1,2,[3,4,5])
a[0]=10
# 會報錯
a[-1][-1]=10
print(a)
# 輸出 (1,2,[3,4,10])
上面的案例沒有報錯势决,而且還修改成功了阻塑,你可能現(xiàn)在很困惑、元素到底能不能修改果复。
從表面上看陈莽,元組中的元素確實(shí)被修改了,但其實(shí)修改的不是元組中的元素虽抄,而是[3,4,5]這個列表中的元素走搁。就好比元組中有三個盒子,分別是1迈窟、2私植、[3,4,5],這個三個盒子的位置不能變,但是這個盒子里裝的東西可以變车酣,你可以把這個盒子里的東西拿出來兵琳,你也可以往這個盒子裝一頭大象,但是不論你往盒子裝什么骇径,這個盒子還是之前的盒子躯肌,也就是元組中元素的指向沒有發(fā)生變化。
總結(jié):本篇文章主要分享了怎么定義一個元組破衔、元組與列表的相同和不同之處清女,重點(diǎn)掌握元組的不可變性