Python/ target=_blank class=infotextkey>Python數據結構簡介
四種基本的 Python 數據結構:
- 列表 - 有序、可變、允許重復元素。對于存儲數據序列很有用。
- 元組 - 有序、不可變、允許重復元素。將它們視為不可變的列表。
- 字典 - 無序、可變、由鍵值對映射。對于以鍵值格式存儲數據很有用。
- 集合 - 無序、可變、包含唯一元素。對于成員資格測試和消除重復很有用。
除了基本的數據結構之外,Python 還提供了更高級的結構,例如堆、隊列和鏈表,這些可以進一步增強您的編碼能力。這些高級結構建立在基礎結構的基礎上,可以實現更復雜的數據處理,并且通常用于特殊場景。但并不受限于這里;也可以使用所有現有結構作為基礎來實現您自己的結構。
第 1 步:在 Python 中使用列表
Python 中的列表是什么?
Python 中的列表是一種有序的、可變的數據類型,可以存儲各種對象,并允許重復元素。列表是通過使用方括號來定義的[ ],元素之間用逗號分隔。
例如:
fibs = [0, 1, 1, 2, 3, 5, 8, 13, 21]
列表對于組織和存儲數據序列非常有用。
創(chuàng)建列表
列表可以包含不同的數據類型,如字符串、整數、布爾值等。例如:
mixed_list = [42, "Hello World!", False, 3.14159]
操作列表
可以訪問、添加、更改和刪除列表中的元素。例如:
# 訪問第二個元素(索引從’0’開始)
print(mixed_list[1])
# 添加元素
mixed_list.Append("This is new")
# 更改元素
mixed_list[0] = 5
# 刪除第一元素
mixed_list.pop(0)
列表方法
一些方便的內置列表方法包括:
- sort()- 就地排序列表
- append()- 將元素添加到列表末尾
- insert()- 在索引處插入元素
- pop()- 刪除索引處的元素
- remove()- 刪除第一次出現的值
- reverse()- 就地反轉列表
示例
# 生成列表
cart = ["apples", "oranges", "grapes"]
# Sort the list
cart.sort()
# Add new item
cart.append("blueberries")
# Remove first item
cart.pop(0)
print(cart)
輸出:
['grapes', 'oranges', 'blueberries']
第 2 步:理解 Python 中的元組
什么是元組?
元組是 Python 中的另一種序列數據類型,類似于列表。然而,與列表不同,元組是不可變的,這意味著它們的元素一旦創(chuàng)建就不能更改。它們是通過將元素括在括號中來定義的( )。
# Defining a tuple
my_tuple = (1, 2, 3, 4)
何時使用元組
元組通常用于不應修改的項目的集合。元組比列表更快,這使得它們非常適合只讀操作。一些常見的用例包括:
- 存儲常量或配置數據
- 具有多個組件的函數返回值
- 字典鍵,因為它們是可散列的
訪問元組元素
訪問元組中的元素的方式與訪問列表元素類似。索引和切片的工作方式相同。
# 訪問元組
first_element = my_tuple[0]
sliced_tuple = my_tuple[1:3]
元組操作
由于元組是不可變的,因此許多列表操作(如append()或 )remove()不適用。但是,仍然可以執(zhí)行一些操作:
- 連接:使用+運算符組合元組。
concatenated_tuple = my_tuple + (5, 6)
- 重復:使用運算符重復元組*。
repeated_tuple = my_tuple * 2
- 成員資格:檢查元組中是否存在帶有關鍵字的元素in。
exists = 1 in my_tuple
元組方法
鑒于元組的不可變性質,與列表相比,元組的內置方法更少。一些有用的方法包括:
- count():計算特定元素的出現次數。
count_of_ones = my_tuple.count(1)
- index():查找某個值第一次出現的索引。
index_of_first_one = my_tuple.index(1)
元組打包和解包
元組打包和解包是 Python 中方便的功能:
- 打包:將多個值分配給單個元組。
packed_tuple = 1, 2, 3
- 拆包:將元組元素分配給多個變量。
a, b, c = packed_tuple
不可變但不嚴格
雖然元組本身是不可變的,但它們可以包含可變元素,例如列表。
# 包含可變列表的元組
complex_tuple = (1, 2, [3, 4])
請注意,雖然無法更改元組本身,但可以修改其中的可變元素。
第三步:掌握 Python 字典
Python 中的字典是什么?
Python 中的字典是一種無序、可變的數據類型,用于存儲唯一鍵到值的映射。字典用大括號編寫{ },由逗號分隔的鍵值對組成。
例如:
student = {"name": "Michael", "age": 22, "city": "Chicago"}
字典對于以結構化方式存儲數據和通過鍵訪問值非常有用。
創(chuàng)建字典
字典鍵必須是不可變的對象,例如字符串、數字或元組。字典值可以是任何對象。
student = {"name": "Susan", "age": 23}
prices = {"milk": 4.99, "bread": 2.89}
操作字典
可以通過按鍵訪問、添加、更改和刪除元素。
# 根據鍵訪問元素
print(student["name"])
# 增加一個新的鍵值對
student["major"] = "computer science"
# 改變一個的鍵值
student["age"] = 25
# 刪除一個鍵值對
del student["city"]
字典方法
一些有用的內置方法包括:
- keys()- 返回鍵列表
- values()- 返回值列表
- items()- 返回(鍵,值)元組
- get()- 返回鍵的值,避免 KeyError
- pop()- 刪除鍵并返回值
- update()- 添加多個鍵值
示例
scores = {"Francis": 95, "John": 88, "Daniel": 82}
# 增加新成績
scores["Zoey"] = 97
# 刪除John的成績
scores.pop("John")
# 訪問Daniel的成績
print(scores.get("Daniel"))
# 打印所有同學的名字
print(scores.keys())
第 4 步:Python 中的集合
Python 中的集合是什么?
Python 中的集合是唯一的、不可變對象的無序、可變的集合。集合是用大括號編寫的{ },但與字典不同,集合沒有鍵值對。
例如:
numbers = {1, 2, 3, 4}
集合對于成員資格測試、消除重復和數學運算非常有用。
創(chuàng)建一個集合
可以通過將列表傳遞給構造函數來從列表創(chuàng)建集合set():
my_list = [1, 2, 3, 3, 4]
my_set = set(my_list) # {1, 2, 3, 4}
集合可以包含混合數據類型,例如字符串、布爾值等。
操作集合
可以在集合中添加和刪除元素。
numbers.add(5)
numbers.remove(1)
集合運算
一些有用的集合運算包括:
- union()- 返回兩個集合的并集
- intersection()- 返回集合的交集
- difference()- 返回集合之間的差異
- symmetric_difference()- 返回對稱差值
集合示例
A = {1, 2, 3, 4}
B = {2, 3, 5, 6}
# Union - 合運算
print(A | B)
# 交運算
print(A & B)
# 差運算
print(A - B)
# 對稱差運算
print(A ^ B)
第 5 步:列表、元組、字典和集合的比較
數據結構 |
是否有序 |
可變的 |
重復元素 |
用例 |
列表 |
是的 |
是的 |
是的 |
存儲序列 |
元組 |
是的 |
不 |
是的 |
存儲不可變序列 |
字典 |
不 |
是的 |
鍵:無 |
存儲鍵值對 |
集合 |
不 |
是的 |
不 |
消除重復、會員測試 |
何時使用每種數據結構
- 使用列表來獲取有序的、基于序列的數據。對于堆棧/隊列很有用。
- 使用元組來表示有序的、不可變的序列。當您需要不應更改的固定元素集合時很有用。
- 使用字典來存儲鍵值數據。對于存儲相關屬性很有用。
- 使用集合來存儲唯一元素和數學運算。