第九章 組合數據類型
在編程世界中,數據從來不是孤立存在的。我們不僅要處理單個數字或字符串,更要管理一組數據,例如學生成績列表、坐標點集、或用戶標簽集合。
在 Python 中,用于存放多個數據的容器被稱為組合數據類型(Compound Data Types)。它們讓我們能夠高效地組織、存取與操作成批數據,從而構建更復雜的程序結構。
學習目標:
(1)理解組合數據類型的概念與作用。
(2)掌握列表、元組與集合的創建、訪問及操作方法。
(3)能區分可變與不可變類型的差異與使用場景。
(4)能利用組合類型進行常見任務,如去重、統計、分組。
(5)掌握映射結構(字典)的結構與應用場景。
9.1 組合數據類型概述
現實問題往往涉及多組相關數據。例如:
“學生成績”是一組分數;
“城市氣溫”是一組溫度;
“AI 模型輸出”是一組預測值。
這時我們需要一種容器,能在一個變量中同時存放多個值。
Python 提供了多種組合數據類型(列表、元組、集合、字典等)來完成這一任務,它們不僅能存儲多元素數據,還能靈活操作這些元素。
9.1.1 可變與不可變
(1)可變類型(Mutable)
內容可被修改,如列表、集合、字典等。
(2)不可變類型(Immutable)
內容固定,如整數、range、字符串、元組、凍結集合等。
例如,列表的內容可以隨時增加或刪除,而元組一旦建立,內部元素就不允許改變。
9.1.2 有序與無序
(1)序列類型
可按位置訪問元素,可迭代、支持索引和切片。如列表、元組、range、字符串、字節類型等。
(2)無序類型
按內容組織數據,元素唯一、不支持索引。如集合、凍結集合等。
9.1.3 映射類型
如字典,鍵值對存儲,鍵必須唯一且。通過鍵而不是索引訪問。
9.2 列表類型
列表是 Python 中最靈活的數據結構之一,它能按順序保存任意數量的元素,并可隨時修改、添加或刪除。
列表非常適合存放序列化的數據,如多張圖片路徑、模型參數序列、實驗結果記錄等。
9.2.1 列表的創建
(list)對象可通過方括號 [] 直接定義,也可使用內置構造函數 從可迭代對象創建。
可以包含任意類型的元素,也支持嵌套。
empty = [] # 空列表是一種單行表達式構造列表的方式,簡潔且高效。
print(evens) # [0, 2, 4, 6, 8]9.2.2 列表的常用操作
掌握這些常用操作,可以更高效地使用列表。
(1)拼接、重復、成員判斷
print(2 in a) # True,使用 in 和 not in 判斷元素是否存在(2)索引與切片
print(nums[1:3]) # 切片:從第 2 到第 3 個元素 [2,3]提示:
序列類型的索引與切片的語法都類似于。
(3)修改與刪除
print(lst) # [10, 5](4)訪問與解包
print(name, score) # Alice 95(5)遍歷
print(i, f)(6)使用內置函數
許多內置函數可直接用于列表。
print(sorted(nums)) # [1, 2, 5, 9],返回新列表,原列表不變例 9.2.1:列表去重與排序
先轉換為集合再轉換回列表,可達到快速去重的目的。
print("清洗后的數據:", clean_data)說明:可應用于數據分析中“重復值去除”的場景。
9.2.3 列表方法
除了常見的操作符與內置函數外,Python 還為列表對象提供了豐富的類方法,用于實現更細粒度的操作。
(1)添加與插入
fruits.insert(1, "pear") # 在索引處插入(2)刪除與清空
fruits.clear() # 清空列表(3)排序與反轉
nums.reverse() # 反向排列(4)復制與嵌套
matrix = [[1, 2], [3, 4]] # 二維列表Python 提供兩種方式復制對象。
淺拷貝(Shallow Copy)會創建一個新對象,但內部元素(子對象)依然是原對象的引用。深拷貝(Deep Copy)會創建一個新對象,并遞歸地復制內部所有子對象,形成完全獨立的副本。
deep_copy = copy.deepcopy(matrix)說明:深拷貝會遞歸復制所有層級的對象,適用于嵌套列表等結構。
這些方法幾乎涵蓋了列表對象的全部常用操作,是數據結構中最常使用的接口集合之一。
9.2.4 列表綜合示例與應用
例 9.2.2:計算多張圖片的平均亮度
在圖像處理或機器學習任務中,常需要計算多張圖片的平均亮度,以評估數據集曝光水平或執行歸一化操作。
print(f"平均亮度:{avg:.1f}")在 AI 圖像預處理中,可使用此方法快速計算樣本集的平均亮度,用于數據標準化或曝光補償。
例 9.2.3:中文文本分詞與詞云可視化
本示例演示了如何使用 庫對中文文本進行分詞,去除停用詞,然后通過 庫生成詞云,幫助我們可視化文本中的重要詞匯。
安裝依賴:
pip install jieba wordcloud matplotlib示例代碼:
plt.show()在自然語言處理(NLP)中,中文文本的分詞是基礎任務之一。通過對文本進行分詞,我們可以提取出有意義的詞語,并進一步分析文本中的重要內容。詞云是一種常用的文本數據可視化方法,它通過對詞語頻率的可視化,幫助我們直觀地發現文本中的關鍵詞。
小結
本次課介紹了 Python 中最靈活的容器類型——列表(list),學習了列表的創建方式、常見操作、內置函數與方法調用等,并通過實例理解了列表在數據清洗與 AI 預處理等任務中的應用價值。
在下一課中,我們將繼續學習元組(tuple)與集合(set),它們一個強調“不可變的有序性”,另一個追求“唯一性與集合運算”,共同構成 Python 組合數據結構的核心體系。
“點贊有美意,贊賞是鼓勵”
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.