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號位元素 得到 字串 aindex_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——垃圾回收機制。