1. 程式人生 > 實用技巧 >Python入門系列之元組

Python入門系列之元組

Python系列的學習請點選:https://www.cnblogs.com/lbyy/category/1820463.html

序列

繼上節提到的序列,到底什麼是序列呢?它跟列表有什麼關係?

在python中有六大基本資料型別,除了數字型別之外的五大型別,均可以看作是一個序列。所以序列到底是個什麼東西?官方一點:序列就是按一定規則排成列的物件,這個規則就是順序。誰在前誰在後,誰的前'面是誰,誰的後面是誰,都一眼能夠看得出來。比如說列表 List = ['a', 'b', 'c', 'd']有四個元素,第一個元素是字串 ’a',它的後面是字串'b', 順序很直觀。

那麼我們來列個等式 序列 = 列表、字串、元組、字典、集合,既然列表只是序列的一種,列表有哪些操作來著??索引?切片?加法運算?乘法運算?這些都是序列的特性其實(兒子有的父親一般也會有)。

這也就是為什麼在上一節,我會在很多地方反覆提及序列二字而不是列表。A tuple is the son of a sequence!so,它也可以進行索引和切片的操作,方法和列表是一樣的,只是物件改成了元組而已。直接上個演示程式碼,就不詳細說了。

1 this_tuple = ('a', 'b', 'c', 1, '1', [])  # 定義一個元組

len函式

1 tuple_len = len(this_tuple)  # 得到元組的長度,即有多少個元素 結果是6

元組——索引

#  對元組進行索引
index_a = this_tuple[0]  # 索引0號位元素 得到 字串 a
index_b = this_tuple[1] # 索引1號位元素 得到字串 b index_c = this_tuple[2] index_1 = this_tuple[3] index_str_1 = this_tuple[4] index_list = this_tuple[-1] # 索引最後一位元素 得到空列表 或者index_list = this_tuple[5]

切片

1 #  獲取前三個元素 ('a', 'b', 'c')
2 get_first_three = this_tuple[:3]
#  獲取第4個元素到最後一個元素之間的元素 (1, '1', [])
get_n_last = this_tuple[3:]

反著切(切片的方向由步長決定,預設是1,從左往右)

1 #  從右邊開始切:獲取最後一個元素到第一個元素 ([], '1', 1, 'c', 'b', 'a')
2 get_last_first = this_tuple[::-1]

元組的加法

元組的加法與列表是有區別的,因為python中的元組屬於不可變型別,列表是可變的型別。咦!不可變型別也能做加法運算??of course,不可變指的是這個物件本身被建立後不可再改變,要改變這個物件其實是建立了一個新的物件,也就是說,元組的加法運算沒有改變運算前原來的那個元組,而是在進行運算的同時新建了一個元組,列表則是在本身的基礎上進行了修改

1 this_tuple = ('a', 'b', 'c', 1, '1', [])  # 定義一個元組
2 print(id(this_tuple))  # 列印元組在記憶體的id地址
3 #  20139624
4 
5 this_tuple += (2,)  # 元組this_tuple加上一個元組(2,)再賦值給變數this_tuple
6 print(id(this_tuple))  # 列印運算後元組在記憶體的id地址
7 #  49243896
1 this_list = ['a', 'b', 'c', 1, '1', []]  #  定義了一個列表
2 print(id(this_list))  # 列印列表在記憶體的id地址
3 #  20237088
4 
5 this_list += [2]   #  列表this_list加上列表[2]再賦值給變數this_list
6 print(id(this_list))  # 列印列表在記憶體的id地址
7 #  20237088

上面的兩段程式碼我們得出了結論,列表的加法沒有改變源物件,因為列表時可變物件(建立後本身可以被修改),元組兩次的id地址是不同的,也就是在記憶體中開闢了兩個空間(記憶體一個id指向一個空間,同一個物件在建立後被銷燬前永遠只會在這個空間)所以,新開闢了一個空間是用來儲存後面的新物件,也就是元組加法運算後新建的元組物件

元組的乘法

同樣的元組的乘法也是新建了一個物件,源物件沒有被改變

this_tuple = ('a', 'b', 'c', 1, '1', [])  # 定義一個元組
print(this_tuple*2)

# ('a', 'b', 'c', 1, '1', [], 'a', 'b', 'c', 1, '1', [])

index函式

返回元素的第一個索引,如果元素不存在,會返回valueError

1 this_tuple = ('a', 'b', 'c', 2, 2, [])  # 定義一個元組
2 
3 print(this_tuple.index(2))  # 返回元素空列表的第一個索引位
4 #  3

count函式

返回元組中元素出現的次數

1 this_tuple = ('a', 'b', 'c', 2, 2, [])  # 定義一個元組
2 print(this_tuple.count(2)) # 返回元素數字2 出現的次數
3 #  2

在計算機中資料都是存在硬碟中或記憶體中(其實記憶體也是硬碟的一種,它們的區別在於前者是儲存永久性資料,後者是臨時儲存資料)我們使用python編寫的指令碼,裡面建立了一個列表,那這個列表在程式執行的時候,就被存在了記憶體中直到程式停止才會被銷燬,記憶體被回收,具體可以去了解一下Python的GC——垃圾回收機制