Python基礎學習第三課:數據結構與文件操作

以下是Python基礎學習第三課的完整內容,重點講解數據結構(列表、字典、元組、集合)和文件操作,通過實例演示如何高效管理和操作數據:

?

Python基礎學習第三課:數據結構與文件操作

?

一、課程目標

?

1. 掌握四種核心數據結構:列表(list)、字典(dict)、元組(tuple)、集合(set)

2. 理解數據結構的特性及適用場景

3. 學會文件的讀寫操作(文本文件處理)

?

二、數據結構詳解

?

1. 列表(List):有序、可變的序列

?

- 特點:用方括號

"[]"定義,元素可重復、可修改、按插入順序存儲。

- 常用操作:

# 創建列表

fruits = ["apple", "banana", "orange"]

?

# 訪問元素(索引從0開始)

print(fruits[0]) # 輸出: apple

?

# 修改元素

fruits[1] = "grape" # 修改后: ["apple", "grape", "orange"]

?

# 添加元素

fruits.append("pear") # 末尾追加: ["apple", "grape", "orange", "pear"]

fruits.insert(1, "kiwi") # 在索引1處插入: ["apple", "kiwi", "grape", "orange", "pear"]

?

# 刪除元素

fruits.remove("grape") # 刪除首個匹配項

fruits.pop(0) # 刪除并返回索引0的元素

fruits.clear() # 清空列表

?

# 遍歷列表

for fruit in fruits:

? ? print(fruit)

- 嵌套列表:列表中的元素也可以是列表(二維數組)。

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

print(matrix[1][2]) # 輸出: 6(第2行第3列)

?

2. 字典(Dict):鍵值對集合

?

- 特點:用花括號

"{}"定義,通過鍵(key)快速訪問值(value),鍵必須唯一且不可變(如字符串、數字、元組)。

- 常用操作:

# 創建字典

user = {"name": "Alice", "age": 25, "city": "New York"}

?

# 訪問值

print(user["name"]) # 輸出: Alice

?

# 修改值

user["age"] = 26 # 更新年齡

?

# 添加鍵值對

user["job"] = "Engineer" # 新增鍵"job"

?

# 刪除鍵值對

del user["city"] # 刪除鍵"city"

user.pop("age") # 刪除并返回鍵"age"的值

?

# 遍歷字典

for key, value in user.items():

? ? print(f"{key}: {value}")

- 應用場景:存儲用戶信息、配置參數、JSON數據解析等。

?

3. 元組(Tuple):有序、不可變的序列

?

- 特點:用圓括號

"()"定義(或直接賦值逗號分隔),元素不可修改,適合存儲不應被更改的數據。

- 常用操作:

# 創建元組

coordinates = (10, 20)

?

# 訪問元素

print(coordinates[0]) # 輸出: 10

?

# 元組解包

x, y = coordinates # x=10, y=20

?

# 遍歷元組

for coord in coordinates:

? ? print(coord)

- 與列表的區別:元組更輕量,適合作為字典的鍵(因不可變),或保護數據不被意外修改。

?

4. 集合(Set):無序、唯一的元素集合

?

- 特點:用花括號

"{}"定義(注意:空集合需用

"set()"創建,

"{}"表示空字典!),自動去重,支持集合運算(并集、交集等)。

- 常用操作:

# 創建集合

unique_numbers = {1, 2, 3, 3, 2} # 實際存儲: {1, 2, 3}

?

# 添加元素

unique_numbers.add(4) # {1, 2, 3, 4}

?

# 刪除元素

unique_numbers.remove(2) # 若元素不存在會報錯

unique_numbers.discard(5) # 安全刪除(元素不存在也不報錯)

?

# 集合運算

set1 = {1, 2, 3}

set2 = {3, 4, 5}

print(set1 | set2) # 并集: {1, 2, 3, 4, 5}

print(set1 & set2) # 交集: {3}

print(set1 - set2) # 差集: {1, 2}

- 應用場景:快速去重、成員關系測試(如判斷單詞是否拼寫正確)。

?

三、文件操作:讀寫文本文件

?

1. 文件讀寫流程

?

1. 打開文件 → 2. 讀寫數據 → 3. 關閉文件(避免資源泄漏)。

? ?- 推薦使用

"with"語句:自動管理文件關閉,無需手動調用

"close()"。

?

2. 示例代碼

?

寫入文件

?

# 寫入文本(覆蓋原有內容)

with open("example.txt", "w", encoding="utf-8") as file:

? ? file.write("Hello, Python!\n")

? ? file.write("這是第二行。\n")

?

# 追加內容(不覆蓋)

with open("example.txt", "a", encoding="utf-8") as file:

? ? file.write("這是追加的內容。\n")

?

讀取文件

?

# 逐行讀取

with open("example.txt", "r", encoding="utf-8") as file:

? ? for line in file:

? ? ? ? print(line.strip()) # strip()去除行尾換行符

?

# 讀取全部內容為字符串

with open("example.txt", "r", encoding="utf-8") as file:

? ? content = file.read()

? ? print(content)

?

3. 文件模式說明

?

模式 含義

?

""r"" 只讀(默認模式)

?

""w"" 寫入(覆蓋原有內容)

?

""a"" 追加(在文件末尾添加內容)

?

""r+"" 讀寫(文件指針在開頭)

?

""b"" 二進制模式(如

""rb""或

""wb"")

?

四、綜合案例:學生成績管理系統(簡化版)

?

結合列表、字典和文件操作,實現成績的增刪改查:

?

def add_student(scores_dict):

? ? name = input("請輸入學生姓名:")

? ? score = float(input("請輸入分數:"))

? ? scores_dict[name] = score

? ? print(f"已添加 {name} 的成績:{score}")

?

def show_scores(scores_dict):

? ? print("當前成績單:")

? ? for name, score in scores_dict.items():

? ? ? ? print(f"{name}: {score}")

?

def save_to_file(scores_dict, filename="scores.txt"):

? ? with open(filename, "w", encoding="utf-8") as file:

? ? ? ? for name, score in scores_dict.items():

? ? ? ? ? ? file.write(f"{name},{score}\n")

? ? print("成績已保存到文件!")

?

def load_from_file(filename="scores.txt"):

? ? scores_dict = {}

? ? try:

? ? ? ? with open(filename, "r", encoding="utf-8") as file:

? ? ? ? ? ? for line in file:

? ? ? ? ? ? ? ? name, score = line.strip().split(",")

? ? ? ? ? ? ? ? scores_dict[name] = float(score)

? ? ? ? print("成績已從文件加載!")

? ? except FileNotFoundError:

? ? ? ? print("文件不存在,將創建新文件。")

? ? return scores_dict

?

# 主程序

scores = load_from_file()

while True:

? ? print("\n學生成績管理系統")

? ? print("1. 添加成績")

? ? print("2. 查看成績")

? ? print("3. 保存到文件")

? ? print("4. 退出")

? ? choice = input("請選擇操作:")

? ??

? ? if choice == "1":

? ? ? ? add_student(scores)

? ? elif choice == "2":

? ? ? ? show_scores(scores)

? ? elif choice == "3":

? ? ? ? save_to_file(scores)

? ? elif choice == "4":

? ? ? ? break

? ? else:

? ? ? ? print("無效選擇,請重試!")

?

五、課后練習

?

1. 基礎題:

? ?- 創建一個列表存儲5個學生的姓名,用

"for"循環打印每個姓名。

? ?- 定義一個字典存儲3門課程及其分數(如

"{"數學": 90, "英語": 85}"),計算總分。

2. 進階題:

? ?- 用集合去重:輸入一個包含重復數字的列表,輸出去重后的列表。

? ?- 修改學生成績管理系統,支持按姓名查詢和刪除成績。

?

六、常見問題解答

?

1. Q:列表和元組有什么區別?什么時候用元組?A:列表可變,適合需要頻繁修改的數據;元組不可變,適合存儲常量或作為字典的鍵。

2. Q:字典的鍵為什么必須是不可變類型?A:因為字典通過哈希表實現,鍵的哈希值需固定不變,否則無法正確索引。

3. Q:文件操作后忘記關閉會怎樣?A:可能導致資源泄漏(文件被占用),用

"with"語句可避免此問題。

?

通過本課,你已掌握Python數據管理的核心技能!下一步將學習函數高級用法和模塊化編程,構建更復雜的項目。 💻

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/90417.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/90417.shtml
英文地址,請注明出處:http://en.pswp.cn/web/90417.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【PHP 流程控制完全指南】

PHP 流程控制完全指南🧠 一、什么是流程控制? 在編程中,流程控制是指控制程序執行順序的語句。它決定了代碼是“從上往下執行”,還是“根據條件跳轉”,或者“循環執行某些代碼”。 PHP 中的流程控制語句主要包括&#…

Kafka運維實戰 05 - kafka 消費者組和重平衡(Rebalance)

目錄什么是消費者組?消費者組如何工作?位移(Offset)消費者組的核心機制:重平衡(Rebalance)觸發條件重平衡影響在消息隊列(如 Kafka)的世界里,消費者組是實現高…

Mysql-UDF提權

UDF(User Defined Function) 是用戶自定義函數,是 MySQL 支持的一種機制,可以通過 C語言寫動態鏈接庫(.so / .dll),然后讓 MySQL 調用這些函數,調用方式與一般系統自帶的函數相同&am…

車規級CANFD芯片在汽車車身控制方案中的應用解析

摘要:隨著汽車電子技術的不斷發展,汽車車身控制系統對信息傳輸的效率、可靠性及抗干擾能力等要求日益提高。車規級CANFD芯片作為一種先進的通信芯片,憑借其高速率、高可靠性以及強大的抗干擾能力,成為汽車車身控制系統中的關鍵組件…

docker desktop 訪問 https://registry-1.docker.io/v2/ 報錯問題解決

win11 docker desktop 配置國內鏡像加速器 1、win11管理員運行powershell notepad "$env:APPDATA\Docker\config.json"2、配置以下內容保存 {"registry-mirrors": ["https://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn&qu…

LLaMA-Factory微調教程1:LLaMA-Factory安裝及使用

文章目錄 環境搭建 LLaMA-Factory 安裝教程 模型大小選擇 環境搭建 Windows系統 RTX 4060 Ti(16G顯存) python 3.10 cuda=12.6 cudnn torch== 2.7.1+cu126 torchvision==0.22.1+cu126 torchaudio== 2.7.1+cu126 PS C:\Users\18098> nvidia-smi Tue Jul 22 01:52:19 2025 +…

Oracle數據庫索引性能機制深度解析:從數據結構到企業實踐的系統性知識體系

一、數據檢索的根本問題與索引產生的必然性 1.1、數據檢索的本質挑戰 在理解Oracle索引的性能優勢之前,必須回到數據檢索的根本問題。當面對海量數據時,傳統的線性搜索(Sequential Search)面臨著不可調和的性能瓶頸。這種瓶頸源于…

c#面向對象程序設計

一、面向對象與面向過程的核心區別(概念鋪墊)代碼背景開篇對比了兩種編程范式:面向過程(PP):按步驟分解問題(如 “輸入長→輸入寬→計算面積”);面向對象(OOP…

Kylin V10 4070安裝nvidia驅動+CUDA+docker安裝

目錄 1.系統版本信息 2.安裝nvidia驅動 3.CUDA安裝 4.docker離線安裝 1.系統版本信息 查看一下系統版本,命令為: cat /etc/kylin-release2.安裝nvidia驅動 編輯/usr/lib/modprobe.d/dist-blacklist.conf文件 blacklist nvidiafb加#號注釋掉 添加…

首家!數巔AskBI通過中國信通院數據分析智能體專項測試

近日,在中國信息通信研究院組織的數據分析智能體(Data Agent)專項測試中,數巔生成式分析智能體AskBI順利完成專項測試的全部內容。《數據智能體技術要求》標準及測試簡介中國信通院云計算與大數據研究所依托中國通信標準化協會大數…

一些Avalonia與WPF內容的對應關系和不同用法

UIElement、FrameworkElement和ControlWPFAvaloniaUIElementControlFrameworkElementControlControlTemplatedControl在 WPF 中,通過繼承 Control 類來創建新的模板控件,而在 Avalonia 中,從 TemplatedControl 繼承。在 WPF 中,通…

【REACT18.x】CRA+TS+ANTD5.X封裝自定義的hooks復用業務功能

模擬react中的hooks方法,實現自定義的hooks來封裝我們需要重復使用的組件,來優化代碼。這種hooks也是利用了react的原生hooks來實現我們需要的特定業務,可以返回任何我們需要的值,也可以不返回值,作為一個副作用方法使…

Vue CSR 到 Nuxt 3 SSR 遷移:技術實現與問題解決實錄

1. 遷移動機與技術選型1.1 CSR 架構的局限性 基于 Vue 3 和 Vite 構建的客戶端渲染 (CSR) 單頁應用 (SPA) 提供了良好的開發體驗和用戶交互流暢性。但是其核心局限在于:搜索引擎優化 (SEO):初始 HTML 響應僅包含一個根 div 元素,實際內容由 J…

FastGPT + Kymo:解鎖企業專屬知識庫與智能體開發新體驗

在信息爆炸的時代,企業如何讓知識“活起來”?傳統文檔庫和搜索框早已無法滿足需求。FastGPT——基于RAG技術的開源知識庫系統,正重新定義企業級知識管理! 一、FastGPT是什么? FastGPT是企業構建專屬知識庫的智能核心…

人形機器人_雙足行走動力學:Maxwell模型及在擬合肌腱特性中的應用

一、Maxwell模型及其在擬合肌腱特性中的應用Maxwell模型是經典的粘彈性力學模型之一,由彈簧(彈性元件)和阻尼器(粘性元件)串聯組成。其在生物力學領域的應用主要聚焦于材料的動態響應(如應力松弛和蠕變&…

「iOS」——KVC

源碼學習iOS底層學習:KVC 底層原理一、核心 API 與功能特性**常用方法**KVC 設值 底層原理KVC 取值 底層原理自定義KVC設值取值**特性:無隱私訪問****原理**四、多元應用場景1. **動態數據處理**(1)字典轉模型(2&#…

【Lucene】leafreadercontext邏輯段與segment物理磁盤段的關系

在 Lucene 中,“葉子段”(LeafReaderContext)和 “segment”(物理段)在 Lucene 語境下,LeafReaderContext ≈ segment 的運行時只讀視圖。概念 所在層次 含義 是否一一對應 segment 物理存儲層 Lucene 索引…

Python進階第三方庫之Matplotlib

應用Matplotlib的基本功能實現圖形顯示 應用Matplotlib實現多圖顯示 應用Matplotlib實現不同畫圖種類 1、什么是Matplotlib是專門用于開發2D圖表(包括3D圖表) 以漸進、交互式方式實現數據可視化 2、為什么要學習Matplotlib可視化是在整個數據挖掘的關鍵輔助工具,可以…

【深度解析】從AWS re_Invent 2025看云原生技術發展趨勢

2025 年 6 月 28 日 在科技浪潮持續翻涌的當下,云原生技術已然成為推動企業數字化轉型與創新發展的關鍵力量。而 AWS re:Invent 作為云計算領域一年一度的盛會,向來是展示前沿技術、洞察行業趨勢的重要舞臺。在今年的 AWS re:Invent 2025 大會上&#xf…

高亮標題里的某個關鍵字正則表達式

使用v-html渲染&#xff0c;寫一個高亮方法<span class"title-name" v-html"highlightKeywords(name, keywords)"></span>這里傳入的name帶了文件拓展名&#xff0c;所以先把名稱從文件名里提取出來// 高亮標題顏色highlightKeywords(name, ke…