Python中四大核心數(shù)據(jù)結(jié)構(gòu)(列表,元組,字典和集合)的完全解析
一、列表(List)—— 靈活的動態(tài)數(shù)組
1.1 基礎(chǔ)操作全流程示例
# 創(chuàng)建-操作-輸出完整演示
# 初始化商品列表
products = ["手機(jī)", "筆記本", "耳機(jī)", "鼠標(biāo)"]
print("原始列表:", products) # ['手機(jī)', '筆記本', '耳機(jī)', '鼠標(biāo)']
# 索引訪問與切片
print("首個商品:", products[0]) # 手機(jī)
print("最后兩個商品:", products[-2:]) # ['耳機(jī)', '鼠標(biāo)']
# 元素修改與擴(kuò)展
products[1] = "游戲本" # 修改元素
products.append("鍵盤") # 追加元素
products.insert(2, "顯示器") # 插入元素
print("修改后列表:", products) # ['手機(jī)', '游戲本', '顯示器', '耳機(jī)', '鼠標(biāo)', '鍵盤']
# 刪除操作
removed_item = products.pop(3) # 刪除索引3的元素
print("被刪除商品:", removed_item) # 耳機(jī)
print("當(dāng)前列表:", products) # ['手機(jī)', '游戲本', '顯示器', '鼠標(biāo)', '鍵盤']
1.2 核心方法詳解
# 創(chuàng)建數(shù)字列表
nums = [3, 1, 4, 1, 5, 9]
# 排序與反轉(zhuǎn)
nums.sort() # 升序排列 [1, 1, 3, 4, 5, 9]
nums.reverse() # 反轉(zhuǎn)列表 [9, 5, 4, 3, 1, 1]
# 列表推導(dǎo)式
squares = [x**2 for x in nums if x > 3]
print("大數(shù)平方:", squares) # [81, 25, 16]
# 其他實用方法
print("出現(xiàn)次數(shù):", nums.count(1)) # 2
nums.clear() # 清空列表
二、元組(Tuple)—— 不可變數(shù)據(jù)容器
完整操作示例
# 定義-訪問-解包全流程
# 創(chuàng)建坐標(biāo)元組
point = (10, 20)
# 索引訪問
print("X坐標(biāo):", point[0]) # 10
print("Y坐標(biāo):", point[1]) # 20
# 元組解包
x, y = point
print(f"坐標(biāo)位置: ({x}, {y})") # (10, 20)
# 類型轉(zhuǎn)換示例
list_point = list(point) # 轉(zhuǎn)為列表可修改
list_point[0] += 5
new_point = tuple(list_point)
print("新坐標(biāo):", new_point) # (15, 20)
# 函數(shù)返回多個值
def get_dimensions():
return 1920, 1080
width, height = get_dimensions()
print(f"分辨率: {width}x{height}")
三、字典(Dict)—— 高效鍵值存儲
3.1 完整操作流程
# 創(chuàng)建-更新-遍歷完整示例
# 初始化學(xué)生信息
student = {
"name": "張三",
"age": 18,
"courses": ["數(shù)學(xué)", "英語"]
}
# 添加新信息
student["gender"] = "男"
student["age"] = 19 # 修改年齡
# 安全獲取值
score = student.get("score", 0)
print("默認(rèn)分?jǐn)?shù):", score) # 0
# 刪除元素
removed = student.pop("courses")
print("已刪除課程:", removed) # ['數(shù)學(xué)', '英語']
# 遍歷字典
print("\n學(xué)生詳細(xì)信息:")
for key, value in student.items():
print(f"{key}: {value}")
"""
輸出:
學(xué)生詳細(xì)信息:
name: 張三
age: 19
gender: 男
"""
3.2 進(jìn)階方法應(yīng)用
# 字典合并與推導(dǎo)式
grades = {"數(shù)學(xué)": 90, "英語": 85}
extra_grades = {"編程": 95, "物理": 88}
# 合并字典
grades.update(extra_grades)
# 字典推導(dǎo)式
passed = {subject: score for subject, score in grades.items() if score >= 85}
print("及格科目:", passed) # {'數(shù)學(xué)':90, '英語':85, '編程':95, '物理':88}
# 鍵值反轉(zhuǎn)
inverted_dict = {v: k for k, v in grades.items()}
print("分?jǐn)?shù)對照:", inverted_dict) # {90: '數(shù)學(xué)', 85: '英語', ...}
四、集合(Set)—— 唯一元素管理器
完整操作示例
# 創(chuàng)建-運(yùn)算-方法全流程
# 初始化集合
A = {1, 2, 3, 4}
B = {3, 4, 5, 6}
print("原始集合A:", A) # {1,2,3,4}
print("原始集合B:", B) # {3,4,5,6}
# 集合運(yùn)算
print("并集:", A | B) # {1,2,3,4,5,6}
print("差集:", A - B) # {1,2}
print("對稱差集:", A ^ B) # {1,2,5,6}
# 元素操作
A.add(5) # 添加元素
A.discard(2) # 安全刪除
print("更新后A:", A) # {1,3,4,5}
# 集合推導(dǎo)式
even_numbers = {x for x in range(10) if x%2 == 0}
print("偶數(shù)集合:", even_numbers) # {0,2,4,6,8}
五、四大數(shù)據(jù)結(jié)構(gòu)方法速查表
O(1) :操作耗時與數(shù)據(jù)量無關(guān)
O(n):操作耗時與數(shù)據(jù)量成正比
| 操作 | 列表方法 | 元組特性 | 字典方法 | 集合方法 |
|---|---|---|---|---|
| 添加元素 | append/insert | 不可變 | dict[key] = value | add/update |
| 刪除元素 | pop/remove | 不可變 | pop/del | remove/discard |
| 排序 | sort() | sorted() | sorted(items) | sorted() |
| 反轉(zhuǎn) | reverse() | 需轉(zhuǎn)換列表 | reversed() | 需轉(zhuǎn)換列表 |
| 長度查詢 | len() | len() | len() | len() |
| 包含檢查 | in | in | in (keys) | in |
| 內(nèi)存占用 | 較高 | 較低 | 較高 | 中等 |
| 時間復(fù)雜度 | 查詢O(n) | 查詢O(n) | 查詢O(1) | 查詢O(1) |
六、實戰(zhàn)應(yīng)用案例
數(shù)據(jù)清洗工具函數(shù)
def data_cleaner(raw_data):
# 列表存儲有效數(shù)據(jù)
cleaned = []
# 集合記錄已處理項
seen = set()
# 字典統(tǒng)計頻率
counter = {}
for item in raw_data:
# 去重處理
if item not in seen:
cleaned.append(item)
seen.add(item)
# 統(tǒng)計頻率
counter[item] = counter.get(item, 0) + 1
# 元組保存元信息
meta = (len(raw_data), len(cleaned))
return {
"cleaned_data": cleaned,
"frequency": counter,
"metadata": meta
}
# 測試數(shù)據(jù)
test_data = ["A", "B", "A", "C", "B", "D"]
result = data_cleaner(test_data)
print(result)
"""
輸出:
{
'cleaned_data': ['A', 'B', 'C', 'D'],
'frequency': {'A':2, 'B':2, 'C':1, 'D':1},
'metadata': (6, 4)
}
"""
最佳實踐指南
數(shù)據(jù)結(jié)構(gòu)選擇原則:
- 需要保持順序 → 列表/有序字典
- 快速查找 → 字典/集合
- 數(shù)據(jù)不可變 → 元組
- 元素唯一性 → 集合
性能優(yōu)化技巧:
- 列表在尾部操作的效率最高(append/pop)
- 字典鍵應(yīng)盡量使用不可變類型
- 集合運(yùn)算比手動去重效率更高
代碼可讀性建議:
- 使用類型提示:
def process(items: list[str]) -> dict: - 復(fù)雜結(jié)構(gòu)添加注釋說明
- 優(yōu)先使用內(nèi)置方法而非手動實現(xiàn)
常見陷阱規(guī)避:
- 避免在循環(huán)中修改列表長度
- 字典鍵不存在時使用get()方法
- 注意集合的無序特性
掌握這些核心數(shù)據(jù)結(jié)構(gòu)的特性和使用場景,將顯著提升Python編程效率。建議讀者在實際開發(fā)中多嘗試不同結(jié)構(gòu)的組合應(yīng)用,例如使用字典列表存儲表格數(shù)據(jù),或通過集合運(yùn)算進(jìn)行高效去重。
到此這篇關(guān)于Python中四大核心數(shù)據(jù)結(jié)構(gòu)(列表,元組,字典和集合)的完全解析的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)結(jié)構(gòu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python中內(nèi)置的數(shù)據(jù)結(jié)構(gòu)類型詳解(內(nèi)置數(shù)據(jù)容器)
- Python數(shù)據(jù)結(jié)構(gòu)集合的相關(guān)詳解
- python常用數(shù)據(jù)結(jié)構(gòu)字典梳理
- Python容器類型之列表/字典/元組/集合方式
- Python列表元組字典集合存儲結(jié)構(gòu)詳解
- Python中列表,元組,字典和集合的區(qū)別及它們之間的轉(zhuǎn)換
- Python基礎(chǔ)學(xué)習(xí)列表+元組+字典+集合
- Python字符串、列表、元組、字典、集合的補(bǔ)充實例詳解
- Python基礎(chǔ)學(xué)習(xí)之基本數(shù)據(jù)結(jié)構(gòu)詳解【數(shù)字、字符串、列表、元組、集合、字典】
相關(guān)文章
在Pandas中DataFrame數(shù)據(jù)合并,連接(concat,merge,join)的實例
今天小編就為大家分享一篇在Pandas中DataFrame數(shù)據(jù)合并,連接(concat,merge,join)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
淺談Python 字符串格式化輸出(format/printf)
下面小編就為大家?guī)硪黄獪\談Python 字符串格式化輸出(format/printf)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-07-07
win10安裝tensorflow-gpu1.8.0詳細(xì)完整步驟
這篇文章主要介紹了win10安裝tensorflow-gpu1.8.0詳細(xì)完整步驟,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01

