不間斷 Python 挑戰 Day 14 - 元組 (Tuple)

更新於 發佈於 閱讀時間約 8 分鐘
在程式設計中,我們會使用到一些固定不會變動的資料內容,例如一年的月份、物體的邊長、過去一周的氣溫等等,使用串列的結構固然也可以用來儲存這些資料,但串列可以被新增或刪除,不能有效保護這類不可變動的資料。因此,Python也提供了另一種形式的資料結構,稱為元組,它的資料結構和串列相同,但資料的內容不可變動。此外,由於元組的資料結構較串列簡單,它在執行上也會占用較少的資源。

元組

元組的資料結構如下:
tuple = ( data1, data2, data3, ... )
例如我們定義一個儲存台灣直轄市的元組:
cities_tuple = ("台北", "新北", "桃園", "台中", "台南", "高雄")
print(cities_tuple)
print(type(cities_tuple))
執行結果:
('台北', '新北', '桃園', '台中', '台南', '高雄')
<class 'tuple'>
若元組內只需定義一個元素,必須在元素的最後面加上「,」,否則會變成一個字串型態的資料。
# without 「,」
one_tuple = ("台北")
print(one_tuple)
print(type(one_tuple))
# with 「,」
one_tuple = ("台北",)
print(one_tuple)
print(type(one_tuple))
執行結果如下,可以看到不加「,」會被Python解讀為字串類型的資料:
台北
<class 'str'>
('台北',)
<class 'tuple'>
儘管如此,若要建立一個空的元組,只需要括號即可。
empty_tuple = ()
print(empty_tuple)
print(type(empty_tuple))
執行結果:
()
<class 'tuple'>

讀取元組元素

讀取的方式和串列相同,第一個元素的索引值為0、第二個元素的索引值為1,以此類推;若索引值是-1,代表的是元組的最後一個元素、若索引值是-2,代表的是元組的倒數第二個元素,以此類推。
print(cities_tuple[0])
print(cities_tuple[1])
print(cities_tuple[-1])
print(cities_tuple[-2])
執行結果:
台北
新北
高雄
台南
同樣若要同時取得元組中的多個元素,可用元組切片(slice)的方式:
  • tuple[a:b]  # 取得元組索引值為a到(b-1)的元素
  • tuple[:a]   # 取得元組前a個元素
  • tuple[a:]   # 取得元組索引值為a到最後一個元素
  • tuple[a:b:c]  # 以c為間隔取得元組索引值為a到(b-1)的元素
  • tuple[:]    # 取得元組所有元素
print(cities_tuple[2:5])
print(cities_tuple[:2])
print(cities_tuple[2:])
print(cities_tuple[1:5:2])
print(cities_tuple[:])
執行結果:
('桃園', '台中', '台南')
('台北', '新北')
('桃園', '台中', '台南', '高雄')
('新北', '台中')
('台北', '新北', '桃園', '台中', '台南', '高雄')

重新定義元組

元組內的元素不可被新增、刪除,但可以重新定義整個元組的資料。例如我們想要將前面儲存台灣直轄市的元組內容都各多加一個「市」,可以直接重新定義元組:
cities_tuple = ("台北", "新北", "桃園", "台中", "台南", "高雄")
print(cities_tuple)

cities_tuple = ("台北市", "新北市", "桃園市", "台中市", "台南市", "高雄市")
print(cities_tuple)
執行結果:
('台北', '新北', '桃園', '台中', '台南', '高雄')
('台北市', '新北市', '桃園市', '台中市', '台南市', '高雄市')

元組與串列互換

串列可以轉換為元組:
cities_list = ["台北", "新北", "桃園", "台中", "台南", "高雄"]
cities_tuple = tuple(cities_list)
print(cities_tuple)
執行結果:
('台北', '新北', '桃園', '台中', '台南', '高雄')
元組也可以轉換為串列:
cities_list = list(cities_tuple)
print(cities_list)
執行結果:
['台北', '新北', '桃園', '台中', '台南', '高雄']

使用for迴圈迭代

和串列相同,元組也可以使用for迴圈進行迭代:
cities_tuple = ("台北", "新北", "桃園", "台中", "台南", "高雄")
for city in cities_tuple:
  print(city, end=" ")
執行結果:
台北 新北 桃園 台中 台南 高雄

元組生成

元組和for迴圈結合,可以簡潔的方式產生元組,但和串列不同的是,若僅以小括號括住for迴圈的敘述,產生的僅是生成式(generator)物件,必須再經過tuple()轉換成元組。
scores_tuple = ()
scores_tuple = (x for x in range(10))
print(scores_tuple)
執行結果:
<generator object <genexpr> at 0x0000016CEE6199A0>
經過tuple()轉換:
scores_tuple = tuple((x for x in range(10)))
print(scores_tuple)
執行結果:
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

程式範例

為什麼會看到廣告
avatar-img
47會員
36內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Wei-Jie Weng的沙龍 的其他內容
當我們查字典時,會先找到想查詢的單字在字典裡的位置,才能在那個位置找到單字的定義;在Python中,也有一個類似的資料結構稱作字典,字典的鍵(key)就對應到我們要查詢的單字,字典的值(value)則是該單字的定義。
隨著程式的功能愈來愈複雜,程式碼也愈來愈多,若程式從頭寫到尾沒有任何的段落,可讀性會愈來愈差,甚至會發現同樣的一段程式碼重覆很多遍,因為類似的功能區塊在程式中可能會一再出現。這樣的程式碼不利於多人的協作開發,即使是寫作者本身在一段時間後回來看,可能也難以一眼就掌握程式的主要架構。
另一種迴圈的形式是while迴圈,和for迴圈常常可以達到相同的功能,差別在於for迴圈是在一定的範圍內迭代,例如從1到100,或是串列裡的每一個元素;而while迴圈是一個條件判斷的迴圈,當滿足這個條件就執行迴圈的內容,不滿足時就跳出迴圈。
目前為止,我們學到了基本的for迴圈,也就是僅對一個可迭代物件進行迭代。當一個迴圈裡面還有另一個迴圈,這時就形成了巢狀迴圈,最基本的例子就是九九乘法表,每個被乘數都對應到9個乘數,當被乘數和9個乘數都計算完了之後,才換下一個被乘數,不斷迴圈直到每個被乘數和乘數都計算過。另個for迴圈的應用是將串列和
綜合前幾天所學的內容,這裡實作了一個專題-密碼產生器。在這個專題中,我們運用了變數、串列、for迴圈、random模組等概念,讓使用者可以從數字、符號、英文字母中指定字元的數目,隨機生成一串密碼。
透過random模組生成的隨機數並非是真正完全隨機的,而是可以被重現的,因此這個特徵也被稱為是偽隨機(pseudo-random),而重現隨機數的方式便是透過設定相同的種子(seed),或是設定隨機數生成器的狀態(state)來達成。
當我們查字典時,會先找到想查詢的單字在字典裡的位置,才能在那個位置找到單字的定義;在Python中,也有一個類似的資料結構稱作字典,字典的鍵(key)就對應到我們要查詢的單字,字典的值(value)則是該單字的定義。
隨著程式的功能愈來愈複雜,程式碼也愈來愈多,若程式從頭寫到尾沒有任何的段落,可讀性會愈來愈差,甚至會發現同樣的一段程式碼重覆很多遍,因為類似的功能區塊在程式中可能會一再出現。這樣的程式碼不利於多人的協作開發,即使是寫作者本身在一段時間後回來看,可能也難以一眼就掌握程式的主要架構。
另一種迴圈的形式是while迴圈,和for迴圈常常可以達到相同的功能,差別在於for迴圈是在一定的範圍內迭代,例如從1到100,或是串列裡的每一個元素;而while迴圈是一個條件判斷的迴圈,當滿足這個條件就執行迴圈的內容,不滿足時就跳出迴圈。
目前為止,我們學到了基本的for迴圈,也就是僅對一個可迭代物件進行迭代。當一個迴圈裡面還有另一個迴圈,這時就形成了巢狀迴圈,最基本的例子就是九九乘法表,每個被乘數都對應到9個乘數,當被乘數和9個乘數都計算完了之後,才換下一個被乘數,不斷迴圈直到每個被乘數和乘數都計算過。另個for迴圈的應用是將串列和
綜合前幾天所學的內容,這裡實作了一個專題-密碼產生器。在這個專題中,我們運用了變數、串列、for迴圈、random模組等概念,讓使用者可以從數字、符號、英文字母中指定字元的數目,隨機生成一串密碼。
透過random模組生成的隨機數並非是真正完全隨機的,而是可以被重現的,因此這個特徵也被稱為是偽隨機(pseudo-random),而重現隨機數的方式便是透過設定相同的種子(seed),或是設定隨機數生成器的狀態(state)來達成。
你可能也想看
Google News 追蹤
Thumbnail
/ 大家現在出門買東西還會帶錢包嗎 鴨鴨發現自己好像快一個禮拜沒帶錢包出門 還是可以天天買滿買好回家(? 因此為了記錄手機消費跟各種紅利優惠 鴨鴨都會特別注意銀行的App好不好用! 像是介面設計就是會很在意的地方 很多銀行通常會為了要滿足不同客群 會推出很多App讓使用者下載 每次
Thumbnail
在這篇Python筆記中,我們將探索如何使用元組來管理地理資訊數據。元組是一種有序且不可變的資料結構,非常適合用於儲存地理座標等固定不變的資料。通過實際的Coding Example,我們將展示如何定義元組、進行解包操作,並如何利用元組來簡化地理資訊的管理和處理。
Thumbnail
本篇文章探討了Python中的字串、列表、元組、集合與字典這五種資料類型的定義與基本操作。這些資料類型各具特點,例如字串和元組是不可變的,列表和集合是可變的,適合不同的使用場景。文章中詳細介紹如何定義進行基本的操作(如添加、刪除、訪問元素等)。
Thumbnail
在資料結構與演算法裡, 最簡單的線性資料結構除了list之外就是linked list鏈結串列了。 Linked list又有分為單向Singly linked list 和雙向Doubly linked list 在這篇文章,會從最基礎的Singly linked list開始講起。 定義
Thumbnail
在 Python 中,tuple 與 List有一個關鍵的不同點:tuple 是不可變的,這意味著一旦創建了 tuple,就無法更改其內容。 這與 List的可變性形成了對比,list 可以新增、刪除或修改元素。 元素的意思: 元素:指的是 List 中的每一個獨立的項目或值。
Thumbnail
今天要來介紹的是Python中資料型別的函數, 這幾天學習的素材是Youtube上“程式柴大大的Python 6 小時初學者課程”,一步一步帶著大家操作並解,學習中也別忘了要多多練習,練習的部分我是把我學到的東西請Chatgpt幫我出類似的題型並讓我練習。 以下我先寫出一個簡單的code,再加以
在檢查列表中含有tuple的座標點時,若要給其他演算法做運算時若有其中有tuple有空值時,就會報錯。 本文主要介紹兩種方法可以檢查是否有空值 程式範例1 positon_list =[(42,123),(None,None),(22,11)] for cord in positon_lis
Thumbnail
Array可以說是各種語言除了基本型別之外,最常用的資料型別與容器之一了。 Array 這種連續格子狀的資料結構,在Python要怎麼表達呢? 建立一個空的陣列 最簡單也最直接的寫法就是 array = [] # Python list [] 就對應到大家熟知的array 陣列型態的資料結
Thumbnail
本文詳細介紹了Python中的各種資料型別,包括整數、字串、清單、元組、集合和字典,並提供了相關的操作範例。此外,還解釋了如何在Python中定義和操作變數,包括如何同時對多個變數進行賦值。
Thumbnail
古有四大名著,現今Python四大容器🤣 哪四個?list串列,tuple元組,dict字典,set集合。 那這四個怎麼分? 一起來看看吧! (以下有手寫與上機實際測試請付費觀看) 以上我精心整理主要會使用到的功能 當然python功能太多了,肯定不只。 實際操作: 大概就這樣?(
Thumbnail
列表(List)和元組(Tuple)都是 Python 中用來存儲集合元素的數據結構,兩者看起來很像,在初學時很容易搞混,所以觀念要建立好。 可以把列表(List)和元組(Tuple)想像成是一個容器,什麼元素都可以塞
Thumbnail
/ 大家現在出門買東西還會帶錢包嗎 鴨鴨發現自己好像快一個禮拜沒帶錢包出門 還是可以天天買滿買好回家(? 因此為了記錄手機消費跟各種紅利優惠 鴨鴨都會特別注意銀行的App好不好用! 像是介面設計就是會很在意的地方 很多銀行通常會為了要滿足不同客群 會推出很多App讓使用者下載 每次
Thumbnail
在這篇Python筆記中,我們將探索如何使用元組來管理地理資訊數據。元組是一種有序且不可變的資料結構,非常適合用於儲存地理座標等固定不變的資料。通過實際的Coding Example,我們將展示如何定義元組、進行解包操作,並如何利用元組來簡化地理資訊的管理和處理。
Thumbnail
本篇文章探討了Python中的字串、列表、元組、集合與字典這五種資料類型的定義與基本操作。這些資料類型各具特點,例如字串和元組是不可變的,列表和集合是可變的,適合不同的使用場景。文章中詳細介紹如何定義進行基本的操作(如添加、刪除、訪問元素等)。
Thumbnail
在資料結構與演算法裡, 最簡單的線性資料結構除了list之外就是linked list鏈結串列了。 Linked list又有分為單向Singly linked list 和雙向Doubly linked list 在這篇文章,會從最基礎的Singly linked list開始講起。 定義
Thumbnail
在 Python 中,tuple 與 List有一個關鍵的不同點:tuple 是不可變的,這意味著一旦創建了 tuple,就無法更改其內容。 這與 List的可變性形成了對比,list 可以新增、刪除或修改元素。 元素的意思: 元素:指的是 List 中的每一個獨立的項目或值。
Thumbnail
今天要來介紹的是Python中資料型別的函數, 這幾天學習的素材是Youtube上“程式柴大大的Python 6 小時初學者課程”,一步一步帶著大家操作並解,學習中也別忘了要多多練習,練習的部分我是把我學到的東西請Chatgpt幫我出類似的題型並讓我練習。 以下我先寫出一個簡單的code,再加以
在檢查列表中含有tuple的座標點時,若要給其他演算法做運算時若有其中有tuple有空值時,就會報錯。 本文主要介紹兩種方法可以檢查是否有空值 程式範例1 positon_list =[(42,123),(None,None),(22,11)] for cord in positon_lis
Thumbnail
Array可以說是各種語言除了基本型別之外,最常用的資料型別與容器之一了。 Array 這種連續格子狀的資料結構,在Python要怎麼表達呢? 建立一個空的陣列 最簡單也最直接的寫法就是 array = [] # Python list [] 就對應到大家熟知的array 陣列型態的資料結
Thumbnail
本文詳細介紹了Python中的各種資料型別,包括整數、字串、清單、元組、集合和字典,並提供了相關的操作範例。此外,還解釋了如何在Python中定義和操作變數,包括如何同時對多個變數進行賦值。
Thumbnail
古有四大名著,現今Python四大容器🤣 哪四個?list串列,tuple元組,dict字典,set集合。 那這四個怎麼分? 一起來看看吧! (以下有手寫與上機實際測試請付費觀看) 以上我精心整理主要會使用到的功能 當然python功能太多了,肯定不只。 實際操作: 大概就這樣?(
Thumbnail
列表(List)和元組(Tuple)都是 Python 中用來存儲集合元素的數據結構,兩者看起來很像,在初學時很容易搞混,所以觀念要建立好。 可以把列表(List)和元組(Tuple)想像成是一個容器,什麼元素都可以塞