Python 入門 (3) - 數據結構
關於 Python 中常用的數據結構:
數據結構是一種組織和存儲數據的方式,數據結構通常包括系列固定的操作,例如插入、刪除、查找。
本文流程:
- 數據結構的類型
- 集合 (set) (jump to section)
- 元組 (tuple) (jump to section)
- 列表 (list) (jump to section)
- 字典 (dict) (jump to section)
- 使用 for-in 進行迭代 (iteration) (jump to section)
數據結構:
1. 集合 (set):
集合主要的功能為添加或確認元素是否在其中,例如:
- add: 將元素加入集合
- remove: 將元素從集合中刪除
- in: 確認元素是否存在於集合中
下例我們建立一個 espania_zoo 並依序加入 {"elephante", "tigre", "tigre", "jirafa"},因為 set 會去除重複所以最後僅包含 {"elephante", "tigre", "jirafa"}。
# create an empty set espania_zoo = set() # add an element espania_zoo.add("elephante") espania_zoo.add("tigre") # 重複加入元素 espania_zoo.add("tigre") espania_zoo.add("jirafa") # 顯示 espania_zoo: {'elephante', 'jirafa', 'tigre'} print(espania_zoo) # 使用 in 可以確認項目是否在集合之中 is_jirafa_in_zoo = "jirafa" in espania_zoo print(f"Is jirafa in the zoo: {is_jirafa_in_zoo}") # 移除 tigre espania_zoo.remove("tigre") is_tigre_in_zoo = "tigre" in espania_zoo print(f"Is tigre in the zoo: {is_tigre_in_zoo}")
另外集合類型在 Python 中通常用來執行數學上的集合操作,例如交集、聯集、差集等。
# 定義兩家動物園的動物 # 我們可以使用 {} 一次將多個元素加入並形成一個集合 espania_zoo = {"elephante", "tigre", "jirafa"} colombia_zoo = {"tigre", "jirafa"} # 取得動物園中交集的動物 intersection = espania_zoo.intersection(colombia_zoo) is_elephante_in_zoo = "elephante" in intersection print(f"Do both zoos have elephante: {is_elephante_in_zoo}")
2. 元組 (tuple):
在 Python 中,元組是一種有序的不可變序列,它是由一組元素組成的,這些元素可以是不同的數據類型。
- 我們可以用 () 將元素加入並形成 tuple,tuple 使用逗號將元素分隔
- tuple 是不可變的,所以建立後無法再新增或刪除元素
- 透過索引 [位置索引] 可以取得特定位置的值。位置索引從 0 開始,索引值為 0 代表 tuple 的第零個元素。若位置索引的值為負數代表倒著數的意思 (例如: -1 是最後一個)
- 透過切片 [起始值: 終止值] 可以取得特定範圍的值
# 建立一個 tuple my_tuple = (1, 2, 3, 'a', 'b', 'c') print("Original tuple:", my_tuple) # 取得第零個元素即 1 print("First element:", my_tuple[0]) # 取得倒數第一個元素即 'c' print("Last element:", my_tuple[-1]) # 取得索引從 2-4 (不包含 5) 的所有元素 print("Slicing tuple:", my_tuple[2:5]) # 查看 my_tuple 中有幾個元素 print("Length of tuple:", len(my_tuple))
3. 列表 (list):
列表 (list)與元組 (tuple)相似,都具有索引, 切片及長度等功能
# 建立一個 list my_list = [1, 2, 3, 'a', 'b', 'c'] print("Original list:", my_list) # 取得第零個元素即 1 print("First element:", my_list[0]) # 取得倒數第一個元素即 'c' print("Last element:", my_list[-1]) # 取得索引從 2-4 (不包含 5) 的所有元素 print("Slicing list:", my_list[2:5]) # 查看 my_list 中有幾個元素 print("Length of list:", len(my_list))
列表 (list)與元組 (tuple)不同的是,我們可以修改列表中元素的值
# 將第零個元素修改為 10 my_list[0] = 10 print("Modified list:", my_list) # 將 4 插入至 my_list 的尾端 my_list.append(4) print("List after appending:", my_list)
4. 字典 (dict):
- 我們可以透過 {:} 的方式將元素加入並建立字典
- 字典的元素有 : 號,代表一種對應關係 (例如下面的 'name': 'Alice', 'age': 30)
- 'name': 'Alice' 中我們稱 'name' 是鍵,'Alice'是該鍵對應的值。鍵-值的好處是可以形成高可讀性的資料結構。
- 查找字典的方式為 dict[鍵]
- 更新字典的方式為 dict[鍵] = 新的值
# 建立新的字典 my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York'} print("Original dictionary:", my_dict) # 查找鍵對應的值 print("Name:", my_dict['name']) print("Age:", my_dict['age']) # 更新鍵對應的值 my_dict['age'] = 25 print("Modified dictionary:", my_dict) my_dict['gender'] = 'Female' print("Dictionary after adding new pair:", my_dict) # 刪除鍵 del my_dict['city'] print("Dictionary after removing key-value pair:", my_dict) # 我們可以用 in 確認鍵是否存在 print("Is 'age' a key in the dictionary?", 'age' in my_dict) print("Is 'city' a key in the dictionary?", 'city' in my_dict)
5. 使用 for-in 進行迭代:
使用 for-in 迴圈進行迭代可以遍歷數據結構中的每個元素。
my_list = [1, 2, 3, 4, 5] for num in my_list: print(num) my_tuple = ('a', 'b', 'c', 'd', 'e') for letter in my_tuple: print(letter)
在 Python 3.7 之前,字典(dict)和集合(set)都是無序的,意味著它們的元素的順序是不定的。在不同的情況下,可能會以不同的順序迭代它們的元素。
my_set = {1, 2, 3, 4, 5} for num in my_set: print(num) my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York'} for key, value in my_dict.items(): print(key, ":", value)
從 Python 3.7 開始,字典(dict)是有序的。
留言
張貼留言