元組是一種不可改變的序列,它裡面的內容是不可以被改變的。元組屬於序列,它和列表相似,最主要的差別就是元組創建之後就不能再對裡面的元素進行增刪操作。
元組的一般形式為:
(1,2,3,4,5,6)
它與列表結構的區別在於它使用小括號'()',裡面每個元素之間用','隔開,在元組中同樣可以存放整數、字串、列表等類型的內容。
創建可以採用多種方式。
建立空元組和列表方式一樣,語法格式為:
my_tuple=()
下面看個例子:
my_tuple=()#建立空元組print(my_tuple)#輸出print('資料型別',type(my_tuple))#看一下它的型別
輸出結果:
()資料型別<class'tuple'>
賦值創建元組的方式也相對簡單,大家學過列表之後學習後面的都很方便,一定要好好掌握列表中的相關內容。
直接賦值的語法格式:
my_tuple=(value1,value2,value3,value4,value5)
my_tuple為列表名,value1~value5位元組中的各個元素,可以是整數、字串或列表,看下面的例子:
my_tuple=('www.dotcpp.com','123456',[1,2,3,4,5,6])#建立元組並直接進行賦值print(my_tuple)#輸出
輸出結果:
('www.dotcpp.com','123456',[1,2,3,4,5])
使用range()函數我們可以建立具有一定資料規模的元組。看下面例子:
my_tuple=tuple(range(1,100,3))#range(1,100,3)建立了一個1-100之間步長為3的序列,最後使用tuple()強制轉換為元組類型print(my_tuple)#輸出
輸出為:
(1,4,7,10,13,16,19,22,25,28,31,34,37,40,43,46,49,52,55,58,61,64,67,70,73 ,76,79,82,85,88,91,94,97)
刪除元組的方式和列表相同,使用del語句直接進行刪除,語法形式為:
delmy_tuple
如下例:
>>>my_tuple=tuple(range(1,100,3))#range(1,100,3)建立了一個1-100之間步長為3的序列,最後使用tuple()強制轉換為元組類型>>> delmy_tuple#刪除元祖>>>print(my_tuple)#這時候再輸出就會報錯Traceback(mostrecentcalllast):File<stdin>,line1,in<module>NameError:name'my_tuple'isnotdefined
我們在存取元組元素的時候同樣是根據索引位置去找到所要存取的元素。
我們先建立一個元組my_tuple = ('a','b','c','d')
然後看一下程式碼:
my_tuple=('a','b','c','d')print(my_tuple[0],my_tuple[1],my_tuple[2],my_tuple[3])
輸出結果:
abcd
看一下對應表格:
因為元組是不可變的數列,所以我們不可以對其元素進行修改,如果採用列表形式直接透過索引值進行修改的話會出現錯誤訊息。
>>>my_tuple=(1,2,3,4,5,6)>>>my_tuple[2]=6Traceback(mostrecentcalllast):File<stdin>,line1,in<module>TypeError:'tuple'objectdoesnotsupportitemassignment
所以我們如果要修改元組中的元素就要採用其他的方法。通常會採用兩種方式,一種是重新賦值法,一種是型別轉換法。
>>>mytuple=(11,22,33,44,55,66,77)>>>mytuple=(1,2,3)>>>mytuple(1,2,3)
這樣的覆蓋方式可以很簡單的修改了元組中的元素,當然這種方式的使用範圍受到限制,因此我們在大多數情況下可以採用第二種。
如果要對元組的第一百元素進行修改,那麼採用上面方式就顯得十分麻煩,因此可以採用類型轉換,先把元組轉換成其他資料類型,例如轉換為列表,一般情況下我們都是轉成列表進行操作。
看下面例子:
my_tuple=(1,2,3,4,5,6)#先建立一個元組my_tuple=list(my_tuple)#把元組轉換成列表形式print(my_tuple,type(my_tuple))#輸出看一下現在的資料和類型my_tuple.insert(3,'插入新元素')#在清單類型下進行元素的插入或更改或刪除my_tuple[3]=['元素的更改']my_tuple.pop()#元素的刪除, pop()自動刪除最後一項,也就是對應的6my_tuple=tuple(my_tuple)#最後轉換為元組形式print(my_tuple,type(my_tuple))#列印
輸出結果:
[1,2,3,4,5,6]<class'list'>(1,2,3,['元素的改變'],4,5)<class'tuple'>
元組相對於列表缺少了一些功能,但元組也有它的獨特之處,首先元組的性能是比較高的,處理元組的速率要快於列表,其次是它非常安全,當數據規模較大的時候,使用元組能保障你的資料不會被修改,確保了安全性,在儲存方面是一個很好的選擇。