最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文拆解Python的四大核心數(shù)據(jù)結(jié)構(gòu)(列表/元組/集合/字典)

 更新時間:2026年04月02日 09:13:38   作者:卷心菜狗  
本文為大家系統(tǒng)梳理了Python中列表(List)、元組(Tuple)、集合(Set)和字典(Dict)四大數(shù)據(jù)結(jié)構(gòu)的關(guān)鍵特性與使用場景,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下

一、核心特性總覽(避免混淆)

數(shù)據(jù)結(jié)構(gòu)標(biāo)識符號核心特性是否可變是否有序元素是否唯一元素要求
列表(List)[]有序序列,可重復(fù)? 可變? 有序? 可重復(fù)任意類型(數(shù)字/字符串/對象)
元組(Tuple)()有序序列,可重復(fù)? 不可變? 有序? 可重復(fù)任意類型
集合(Set){}無序容器? 可變? 無序? 唯一(去重)元素必須「可哈?!梗ú豢勺冾愋停篿nt/str/tuple)
字典(Dict){key:value}鍵值對映射? 可變? 3.7+有序? 鍵唯一,值可重復(fù)鍵:可哈希;值:任意類型

補充:「可哈?!? 不可變(如數(shù)字、字符串、元組);「不可哈?!? 可變(如列表、集合、字典),不可作為集合元素/字典鍵。

二、逐個拆解:定義/操作/函數(shù)/轉(zhuǎn)換

(一)列表(List)—— 「可修改的有序抽屜」

1. 定義與創(chuàng)建

列表是Python最常用的有序可變數(shù)據(jù)結(jié)構(gòu),適合存儲需要頻繁修改的有序數(shù)據(jù)。

# 方式1:創(chuàng)建空列表
list1 = []

# 方式2:直接賦值(支持混合數(shù)據(jù)類型)
# 元素可以是數(shù)字、字符串、嵌套列表、布爾值等任意類型
list2 = [1, 2, "Python", [3, 4], True]

# 方式3:列表推導(dǎo)式(快速生成有規(guī)律的列表)
# 生成0-8的偶數(shù)列表:x從0到4,每個x乘2
list3 = [x * 2 for x in range(5)]  # 結(jié)果:[0, 2, 4, 6, 8]

# 方式4:類型轉(zhuǎn)換(其他可迭代對象轉(zhuǎn)列表)
list4 = list("abc")        # 字符串轉(zhuǎn)列表 → ['a', 'b', 'c']
list5 = list((1, 2, 3))    # 元組轉(zhuǎn)列表 → [1, 2, 3]
list6 = list({1, 2, 3})    # 集合轉(zhuǎn)列表 → [1, 2, 3](集合無序,順序隨機)

2. 提取元素(核心:索引+切片)

列表是有序的,可通過「索引(下標(biāo))」或「切片」提取,索引從0開始,負(fù)索引從-1(最后一個元素)倒推。

# 定義示例列表
nums = [10, 20, 30, 40, 50]

# 1. 單個元素提取(索引取值)
print(nums[0])    # 正索引:取第1個元素 → 10
print(nums[-1])   # 負(fù)索引:取最后1個元素 → 50

# 2. 切片提?。ㄕZ法:[起始索引:結(jié)束索引:步長],左閉右開)
print(nums[1:3])  # 取索引1到2的元素 → [20, 30]
print(nums[:3])   # 省略起始:從頭取到索引2 → [10, 20, 30]
print(nums[::2])  # 步長2:隔一個取一個 → [10, 30, 50]
print(nums[::-1]) # 步長-1:反轉(zhuǎn)列表 → [50, 40, 30, 20, 10]

# 3. 遍歷提取元素
# 普通遍歷:逐個取元素
for num in nums:
    print(num)  # 依次輸出:10, 20, 30, 40, 50

# 帶索引遍歷:同時獲取索引和元素(enumerate函數(shù))
for index, num in enumerate(nums):
    print(f"索引{index}對應(yīng)的元素:{num}")  # 輸出:索引0:10 等

3. 增刪改操作(列表可變的核心)

操作方法/語法簡單示例
增加(末尾)append()nums.append(30) → [10,20,30]
增加(指定位置)insert(索引, 元素)nums.insert(1, 15) → [10,15,20]
增加(批量)extend(可迭代對象)nums.extend([30,40]) → [10,20,30,40]
修改索引賦值nums[0] = 100 → [100,20]
刪除(按索引)pop(索引)nums.pop(1) → 刪除20,返回20
刪除(按值)remove(值)nums.remove(20) → [10,30,20]
刪除(全部)clear()nums.clear() → []
批量刪除del 切片del nums[1:3] → [10,40]

完整操作示例(帶詳細(xì)注釋)

# 1. append() - 向列表末尾添加單個元素
nums = [10, 20]
nums.append(30)  # 僅能添加一個元素,不能傳多個
print(nums)      # 輸出:[10, 20, 30]
# 2. insert() - 向指定索引位置插入元素
nums = [10, 20]
# 索引1的位置插入15,原索引1的20及后續(xù)元素后移
nums.insert(1, 15)
print(nums)  # 輸出:[10, 15, 20]
# 3. extend() - 批量添加可迭代對象的元素(列表/元組/字符串等)
nums = [10, 20]
nums.extend([30, 40])  # 把列表[30,40]的元素逐個添加到nums
# 也可以傳其他可迭代對象:nums.extend((50,60)) / nums.extend("ab")
print(nums)  # 輸出:[10, 20, 30, 40]
# 4. 修改元素 - 通過索引直接賦值
nums = [10, 20]
nums[0] = 100  # 把索引0的元素改為100
print(nums)    # 輸出:[100, 20]
# 5. pop() - 按索引刪除元素,返回被刪除的元素
nums = [10, 20, 30]
removed_num = nums.pop(1)  # 刪除索引1的元素
print("被刪除的元素:", removed_num)  # 輸出:20
print("刪除后的列表:", nums)        # 輸出:[10, 30]
# 不傳索引時,默認(rèn)刪除最后一個元素:nums.pop() → 刪除30
# 6. remove() - 按值刪除元素(僅刪除第一個匹配的值)
nums = [10, 20, 30, 20]
nums.remove(20)  # 只刪除第一個20
print(nums)      # 輸出:[10, 30, 20]
# 7. clear() - 清空列表所有元素(列表本身還存在)
nums = [10, 20]
nums.clear()
print(nums)  # 輸出:[]
# 8. del 切片 - 批量刪除指定范圍的元素
nums = [10, 20, 30, 40]
del nums[1:3]  # 刪除索引1到2的元素(左閉右開)
print(nums)    # 輸出:[10, 40]

4. 常用內(nèi)置函數(shù)/方法

函數(shù)/方法作用簡單示例
len(list)統(tǒng)計列表長度len([10,20]) → 2
count(值)統(tǒng)計元素出現(xiàn)次數(shù)[1,2,2,3].count(2) → 2
index(值)查找元素首次出現(xiàn)的索引[10,20,30].index(20) → 1
sort()原地排序(默認(rèn)升序)nums.sort() → [10,20,30]
sorted(list)排序(返回新列表)sorted([30,10]) → [10,30]
reverse()原地反轉(zhuǎn)列表nums.reverse() → [30,20,10]
copy()淺拷貝列表nums2 = nums.copy()

完整方法示例

# 1. len() - 統(tǒng)計列表元素個數(shù)
nums = [10, 20, 30]
print("列表長度:", len(nums))  # 輸出:3

# 2. count() - 統(tǒng)計指定元素出現(xiàn)的次數(shù)
nums = [1, 2, 2, 3, 2]
print("元素2出現(xiàn)的次數(shù):", nums.count(2))  # 輸出:3

# 3. index() - 查找元素首次出現(xiàn)的索引(元素不存在會報錯)
nums = [10, 20, 30, 20]
print("元素20首次出現(xiàn)的索引:", nums.index(20))  # 輸出:1
# 可指定查找范圍:nums.index(20, 2) → 從索引2開始找20,返回3

# 4. sort() - 原地排序(修改原列表,無返回值)
nums = [30, 10, 20]
nums.sort()  # 默認(rèn)升序排序
print("升序排序后:", nums)  # 輸出:[10, 20, 30]

nums.sort(reverse=True)  # 降序排序
print("降序排序后:", nums)  # 輸出:[30, 20, 10]

# 5. sorted() - 排序(返回新列表,原列表不變)
nums = [30, 10, 20]
new_nums = sorted(nums)  # 升序
print("原列表:", nums)     # 輸出:[30, 10, 20](不變)
print("新列表:", new_nums) # 輸出:[10, 20, 30]

# 6. reverse() - 原地反轉(zhuǎn)列表(修改原列表)
nums = [10, 20, 30]
nums.reverse()
print("反轉(zhuǎn)后:", nums)  # 輸出:[30, 20, 10]

# 7. copy() - 淺拷貝(新列表和原列表互不影響)
nums = [10, 20]
nums2 = nums.copy()  # 拷貝nums到nums2
nums2[0] = 100       # 修改nums2的元素
print("原列表:", nums)   # 輸出:[10, 20](不受影響)
print("拷貝列表:", nums2) # 輸出:[100, 20]

(二)元組(Tuple)—— 「不可修改的有序抽屜」

1. 定義與創(chuàng)建

元組是有序不可變數(shù)據(jù)結(jié)構(gòu),適合存儲不需要修改的固定數(shù)據(jù)(如坐標(biāo)、函數(shù)返回多值),比列表更節(jié)省內(nèi)存。

# 方式1:創(chuàng)建空元組
t1 = ()

# 方式2:直接賦值(多元素)
t2 = (1, 2, "Python")

# 方式3:單元素元組(必須加逗號,否則不是元組)
t3 = (10,)  # 正確:元組
# t3 = (10)  # 錯誤:只是數(shù)字10,不是元組

# 方式4:省略括號(元組打包)
t4 = 10, 20, 30  # 等價于 (10,20,30)

# 方式5:類型轉(zhuǎn)換
t5 = tuple([1, 2, 3])  # 列表轉(zhuǎn)元組 → (1, 2, 3)
t6 = tuple("abc")      # 字符串轉(zhuǎn)元組 → ('a', 'b', 'c')

2. 提取元素(和列表完全一致)

元組有序,支持索引、切片、遍歷,語法和列表完全相同。

# 定義示例元組
t = (10, 20, 30, 40)

# 1. 索引取值
print(t[0])    # 取第一個元素 → 10
print(t[-1])   # 取最后一個元素 → 40

# 2. 切片取值
print(t[1:3])  # 取索引1到2的元素 → (20, 30)
print(t[::2])  # 步長2 → (10, 30)

# 3. 遍歷元素
# 普通遍歷
for num in t:
    print(num)  # 依次輸出:10, 20, 30, 40

# 帶索引遍歷
for index, num in enumerate(t):
    print(f"索引{index}:{num}")

3. 核心特性:不可修改

元組的元素一旦創(chuàng)建就不能增刪改,強行修改會報錯;但元組內(nèi)的「可變元素」(如列表)可修改內(nèi)部值。

# 1. 強行修改元組元素 → 報錯
t = (10, 20, 30)
# t[0] = 100  # 執(zhí)行報錯:TypeError: 'tuple' object does not support item assignment

# 2. 例外:元組中的可變元素(如列表)可修改內(nèi)部值
t = (1, [2, 3])  # 元組包含列表(可變)
t[1][0] = 20     # 修改列表的第一個元素
print(t)         # 輸出:(1, [20, 3])(元組本身結(jié)構(gòu)未變)

4. 常用內(nèi)置函數(shù)/方法

元組因不可變,方法極少,核心使用以下3個:

函數(shù)/方法作用簡單示例
len(tuple)統(tǒng)計元組長度len((10,20)) → 2
count(值)統(tǒng)計元素出現(xiàn)次數(shù)(1,2,2,3).count(2) → 2
index(值)查找元素首次出現(xiàn)的索引(10,20,30).index(20) → 1

完整方法示例

# 1. len() - 統(tǒng)計元組長度
t = (10, 20, 30)
print("元組長度:", len(t))  # 輸出:3

# 2. count() - 統(tǒng)計元素出現(xiàn)次數(shù)
t = (1, 2, 2, 3, 2)
print("元素2出現(xiàn)次數(shù):", t.count(2))  # 輸出:3

# 3. index() - 查找元素首次出現(xiàn)的索引
t = (10, 20, 30, 20)
print("元素20首次索引:", t.index(20))  # 輸出:1
# 指定查找范圍:t.index(20, 2) → 從索引2開始找,返回3

5. 實用場景(帶示例)

# 場景1:函數(shù)返回多值(本質(zhì)是返回元組)
def get_user_info():
    # 函數(shù)返回多個值,自動打包成元組
    return "小明", 18, "北京"

# 解包元組到多個變量
name, age, city = get_user_info()
print(name, age, city)  # 輸出:小明 18 北京

# 場景2:作為字典的鍵(可哈希)
# 列表不可作為字典鍵,但元組可以
user_coords = {(100, 200): "用戶1", (300, 400): "用戶2"}
print(user_coords[(100, 200)])  # 輸出:用戶1

# 場景3:存儲固定配置(不可修改,更安全)
config = ("localhost", 8080, "utf-8")  # 數(shù)據(jù)庫配置等固定值
print("服務(wù)器地址:", config[0])  # 輸出:localhost

(三)集合(Set)—— 「無序去重的籃子」

1. 定義與創(chuàng)建

集合是無序、可變、元素唯一的容器,核心用途是「去重」和「集合運算(交集/并集)」。

注意:空集合必須用set(),不能用{}{}是空字典)。

# 方式1:創(chuàng)建空集合(必須用set())
s1 = set()

# 方式2:直接賦值(自動去重,元素需可哈希)
s2 = {1, 2, 3, 3, 4}  # 重復(fù)的3被自動去重 → {1, 2, 3, 4}

# 方式3:集合推導(dǎo)式(快速生成)
# 生成1-3的集合,自動去重
s3 = {x for x in [1, 2, 2, 3]}  # 結(jié)果:{1, 2, 3}

# 方式4:類型轉(zhuǎn)換(自動去重)
s4 = set([1, 2, 2, 3])  # 列表轉(zhuǎn)集合 → {1, 2, 3}
s5 = set("aabbcc")       # 字符串轉(zhuǎn)集合 → {'a', 'b', 'c'}

2. 提取元素(無索引,只能遍歷)

集合無序,無索引/切片,只能通過遍歷或隨機取值(pop())提取元素。

# 定義示例集合
s = {1, 2, 3}

# 1. 遍歷元素(順序隨機)
for num in s:
    print(num)  # 輸出順序可能是1,3,2 或 2,1,3等

# 2. pop() - 隨機刪除并返回一個元素(集合無序,無“第一個”元素)
s = {1, 2, 3}
removed_num = s.pop()
print("隨機刪除的元素:", removed_num)  # 隨機返回1/2/3
print("刪除后的集合:", s)            # 剩余2個元素

3. 增刪改操作

操作方法簡單示例
增加(單個)add(元素)s.add(4) → {1,2,3,4}
增加(批量)update(可迭代對象)s.update([4,5]) → {1,2,3,4,5}
刪除(按值,報錯)remove(值)s.remove(2) → {1,3}
刪除(按值,不報錯)discard(值)s.discard(10) → {1,2,3}
隨機刪除pop()s.pop() → 隨機刪除1個元素
清空clear()s.clear() → set()
修改先刪后加s.discard(2);s.add(20) → {1,3,20}

完整操作示例

# 1. add() - 添加單個元素(已存在則不操作)
s = {1, 2, 3}
s.add(4)    # 添加新元素4
s.add(2)    # 元素2已存在,無操作
print(s)    # 輸出:{1, 2, 3, 4}

# 2. update() - 批量添加可迭代對象的元素
s = {1, 2, 3}
s.update([4, 5])  # 添加列表的元素
# 也可傳元組/字符串:s.update((6,7)) / s.update("ab")
print(s)          # 輸出:{1, 2, 3, 4, 5}

# 3. remove() - 按值刪除(元素不存在則報錯)
s = {1, 2, 3}
s.remove(2)       # 刪除元素2
print(s)          # 輸出:{1, 3}
# s.remove(10)    # 元素10不存在,報錯:KeyError

# 4. discard() - 按值刪除(元素不存在不報錯,推薦使用)
s = {1, 2, 3}
s.discard(10)     # 元素10不存在,無操作、無報錯
print(s)          # 輸出:{1, 2, 3}

# 5. pop() - 隨機刪除并返回一個元素
s = {1, 2, 3}
removed = s.pop()
print("刪除的元素:", removed)  # 隨機輸出1/2/3
print("剩余集合:", s)          # 剩余2個元素

# 6. clear() - 清空集合
s = {1, 2, 3}
s.clear()
print(s)  # 輸出:set()(空集合)

# 7. 修改元素 - 集合無直接修改方法,需先刪后加
s = {1, 2, 3}
s.discard(2)  # 刪除舊元素
s.add(20)     # 添加新元素
print(s)      # 輸出:{1, 3, 20}

4. 核心:集合運算(面試高頻)

集合的核心價值是集合運算,用于數(shù)據(jù)對比(交集/并集/差集)。

運算符號/方法簡單示例(s1={1,2,3}, s2={2,3,4})
并集(所有元素)`` / union()
交集(共同元素)& / intersection()s1 & s2 → {2,3}
差集(s1有,s2無)- / difference()s1 - s2 → {1}
對稱差集(互不相同)^ / symmetric_difference()s1 ^ s2 → {1,4}
子集判斷issubset(){1,2}.issubset(s1) → True
超集判斷issuperset()s1.issuperset({1,2}) → True

完整運算示例

# 定義兩個示例集合
s1 = {1, 2, 3}
s2 = {2, 3, 4}

# 1. 并集:包含s1和s2的所有元素(去重)
print("并集:", s1 | s2)          # 符號寫法 → {1,2,3,4}
print("并集:", s1.union(s2))     # 方法寫法 → {1,2,3,4}

# 2. 交集:s1和s2都有的元素
print("交集:", s1 & s2)              # 符號寫法 → {2,3}
print("交集:", s1.intersection(s2)) # 方法寫法 → {2,3}

# 3. 差集:s1有但s2沒有的元素
print("差集:", s1 - s2)             # 符號寫法 → {1}
print("差集:", s1.difference(s2))    # 方法寫法 → {1}

# 4. 對稱差集:s1和s2互不相同的元素
print("對稱差集:", s1 ^ s2)                      # 符號寫法 → {1,4}
print("對稱差集:", s1.symmetric_difference(s2))   # 方法寫法 → {1,4}

# 5. 子集判斷:判斷s2的子集是否包含于s1
s3 = {1, 2}
print("s3是否是s1的子集:", s3.issubset(s1))  # 輸出:True

# 6. 超集判斷:判斷s1是否包含s3的所有元素
print("s1是否是s3的超集:", s1.issuperset(s3))  # 輸出:True

(四)字典(Dictionary)—— 「鍵值對的映射表」

1. 定義與創(chuàng)建

字典是「鍵-值」映射結(jié)構(gòu),鍵唯一且可哈希,值可任意類型,3.7+版本后有序(按插入順序),核心用途是「快速查找」(通過鍵找值,效率遠(yuǎn)高于列表)。

# 方式1:創(chuàng)建空字典
d1 = {}

# 方式2:直接賦值(鍵值對形式)
# 鍵:可哈希(字符串/數(shù)字/元組);值:任意類型(列表/字典等)
d2 = {"name": "小明", "age": 18, "hobby": ["籃球", "游戲"]}

# 方式3:dict()構(gòu)造函數(shù)(鍵不加引號)
d3 = dict(name="小紅", age=20)  # 結(jié)果:{'name':'小紅', 'age':20}

# 方式4:列表轉(zhuǎn)字典(元素為鍵值對元組)
d4 = dict([("name", "小剛"), ("age", 19)])  # 結(jié)果:{'name':'小剛', 'age':19}

# 方式5:字典推導(dǎo)式(快速生成)
# 鍵為a/b,值為對應(yīng)值的2倍
d5 = {k: v * 2 for k, v in {"a": 1, "b": 2}.items()}  # 結(jié)果:{'a':2, 'b':4}

# 方式6:zip()創(chuàng)建(鍵和值分別來自兩個可迭代對象)
keys = ["name", "age"]    # 鍵列表
values = ["小李", 21]     # 值列表
d6 = dict(zip(keys, values))  # 結(jié)果:{'name':'小李', 'age':21}

2. 提取元素(核心:按鍵取值)

提取方式語法簡單示例(d={"name":"小明", "age":18})
按鍵取值d[鍵]d["name"] → "小明"
安全取值get(鍵, 默認(rèn)值)d.get("gender", "男") → "男"
取所有鍵keys()d.keys() → dict_keys(['name','age'])
取所有值values()d.values() → dict_values(['小明',18])
取所有鍵值對items()d.items() → dict_items([('name','小明'),('age',18)])
遍歷for k in d遍歷所有鍵
遍歷鍵值對for k,v in d.items()同時遍歷鍵和值

完整提取示例

# 定義示例字典
d = {"name": "小明", "age": 18}

# 1. 按鍵取值(鍵不存在會報錯)
print(d["name"])  # 輸出:小明
# print(d["gender"])  # 鍵不存在,報錯:KeyError

# 2. get()安全取值(推薦使用,鍵不存在返回默認(rèn)值/None)
print(d.get("gender"))        # 無默認(rèn)值,返回None
print(d.get("gender", "男"))  # 有默認(rèn)值,返回:男

# 3. 取所有鍵(返回dict_keys對象,可轉(zhuǎn)列表)
keys = d.keys()
print("所有鍵:", keys)          # 輸出:dict_keys(['name', 'age'])
print("鍵列表:", list(keys))    # 轉(zhuǎn)列表 → ['name', 'age']

# 4. 取所有值(返回dict_values對象,可轉(zhuǎn)列表)
values = d.values()
print("所有值:", values)        # 輸出:dict_values(['小明', 18])
print("值列表:", list(values))  # 轉(zhuǎn)列表 → ['小明', 18]

# 5. 取所有鍵值對(返回dict_items對象,可轉(zhuǎn)列表)
items = d.items()
print("所有鍵值對:", items)    # 輸出:dict_items([('name','小明'),('age',18)])
print("鍵值對列表:", list(items))  # 轉(zhuǎn)列表 → [('name','小明'),('age',18)]

# 6. 遍歷字典(默認(rèn)遍歷鍵)
for k in d:
    print(f"鍵:{k},值:{d[k]}")  # 輸出:鍵:name,值:小明;鍵:age,值:18

# 7. 遍歷鍵值對(更高效)
for k, v in d.items():
    print(f"鍵:{k},值:{v}")  # 同上,但無需二次取值

3. 增刪改操作

操作語法/方法簡單示例
增加/修改d[鍵] = 值d["age"]=19 → 修改;d["city"]="北京" → 新增
批量增加/修改update(字典)d.update({"age":20, "city":"北京"})
刪除(按鍵)del d[鍵]del d["age"] → 刪除age鍵值對
刪除(按鍵,返回值)pop(鍵, 默認(rèn)值)d.pop("age") → 返回18
刪除最后一個鍵值對popitem()d.popitem() → 刪除最后一個
清空clear()d.clear() → {}

完整操作示例

# 定義示例字典
d = {"name": "小明", "age": 18}

# 1. 增加/修改鍵值對(鍵存在則改,不存在則增)
d["age"] = 19        # 鍵age存在 → 修改值為19
d["city"] = "北京"   # 鍵city不存在 → 新增鍵值對
print(d)             # 輸出:{'name':'小明', 'age':19, 'city':'北京'}

# 2. update() - 批量增加/修改
d.update({"age": 20, "gender": "男"})  # 修改age,新增gender
print(d)                               # 輸出:{'name':'小明', 'age':20, 'city':'北京', 'gender':'男'}

# 3. del - 按鍵刪除(鍵不存在報錯)
del d["city"]        # 刪除city鍵值對
print(d)             # 輸出:{'name':'小明', 'age':20, 'gender':'男'}
# del d["hobby"]     # 鍵不存在,報錯:KeyError

# 4. pop() - 按鍵刪除,返回被刪除的值(鍵不存在返回默認(rèn)值)
removed_age = d.pop("age")  # 刪除age,返回20
print("被刪除的值:", removed_age)  # 輸出:20
print("刪除后字典:", d)            # 輸出:{'name':'小明', 'gender':'男'}

# 鍵不存在時返回默認(rèn)值(無報錯)
removed_hobby = d.pop("hobby", "無")
print(removed_hobby)  # 輸出:無

# 5. popitem() - 刪除最后一個鍵值對(3.7+按插入順序)
d = {"name": "小明", "age": 18, "city": "北京"}
last_item = d.popitem()
print("刪除的鍵值對:", last_item)  # 輸出:('city', '北京')
print("刪除后字典:", d)            # 輸出:{'name':'小明', 'age':18}

# 6. clear() - 清空字典
d.clear()
print(d)  # 輸出:{}(空字典)

4. 常用內(nèi)置函數(shù)/方法

函數(shù)/方法作用簡單示例
len(dict)統(tǒng)計鍵值對數(shù)量len({"name":"小明"}) → 1
copy()淺拷貝字典d2 = d.copy()
setdefault(鍵, 默認(rèn)值)鍵存在返回值,不存在則新增d.setdefault("age",18) → 新增age:18

完整方法示例

# 定義示例字典
d = {"name": "小明", "age": 18}

# 1. len() - 統(tǒng)計鍵值對數(shù)量
print("鍵值對數(shù)量:", len(d))  # 輸出:2

# 2. copy() - 淺拷貝(新字典和原字典互不影響)
d2 = d.copy()    # 拷貝d到d2
d2["name"] = "小紅"  # 修改d2的name
print("原字典:", d)   # 輸出:{'name':'小明', 'age':18}(不受影響)
print("拷貝字典:", d2) # 輸出:{'name':'小紅', 'age':18}

# 3. setdefault() - 查/增鍵值對
# 鍵age存在 → 返回對應(yīng)值,不修改
age = d.setdefault("age", 20)
print("age的值:", age)  # 輸出:18
print(d)                # 輸出:{'name':'小明', 'age':18}

# 鍵gender不存在 → 新增鍵值對,返回默認(rèn)值
gender = d.setdefault("gender", "男")
print("gender的值:", gender)  # 輸出:男
print(d)                      # 輸出:{'name':'小明', 'age':18, 'gender':'男'}

三、四大數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換

轉(zhuǎn)換方向方法簡單示例注意事項
列表 ↔ 元組list(tuple) / tuple(list)list((1,2))→[1,2];tuple([1,2])→(1,2)無數(shù)據(jù)丟失,元組轉(zhuǎn)列表后可修改
列表/元組 ↔ 集合set(list) / list(set)set([1,2,2])→{1,2};list({1,2})→[1,2]集合自動去重,順序隨機
列表/元組 → 字典dict(zip(keys, values))dict(zip(["a","b"],[1,2]))→{'a':1,'b':2}鍵值對數(shù)量需匹配,鍵唯一
字典 → 列表/元組list(d.keys()) / list(d.values())list({'a':1}.keys())→['a']僅能轉(zhuǎn)鍵/值/鍵值對,不能直接轉(zhuǎn)回字典

完整轉(zhuǎn)換示例

# 1. 列表 ? 元組
lst = [1, 2, 3]
tup = tuple(lst)  # 列表轉(zhuǎn)元組 → (1, 2, 3)
lst2 = list(tup)  # 元組轉(zhuǎn)列表 → [1, 2, 3]

# 2. 列表/元組 ? 集合(自動去重)
lst = [1, 2, 2, 3]
s = set(lst)      # 列表轉(zhuǎn)集合 → {1, 2, 3}(去重)
lst2 = list(s)    # 集合轉(zhuǎn)列表 → [1, 2, 3](順序隨機)

# 3. 列表/元組 → 字典(zip())
keys = ["name", "age"]   # 鍵列表
values = ["小明", 18]    # 值列表
d = dict(zip(keys, values))  # 轉(zhuǎn)字典 → {'name':'小明', 'age':18}

# 4. 字典 → 列表/元組
d = {"name": "小明", "age": 18}
key_lst = list(d.keys())    # 鍵轉(zhuǎn)列表 → ['name', 'age']
value_lst = list(d.values())# 值轉(zhuǎn)列表 → ['小明', 18]
item_lst = list(d.items())  # 鍵值對轉(zhuǎn)列表 → [('name','小明'), ('age',18)]

四、核心區(qū)別與使用場景總結(jié)(快速選型)

數(shù)據(jù)結(jié)構(gòu)核心優(yōu)勢最佳使用場景
列表有序、可修改、支持索引/切片存儲有序且需要頻繁增刪改的數(shù)據(jù)集(如:用戶列表、成績列表)
元組不可變、省內(nèi)存、可哈希存儲固定不變的數(shù)據(jù)(如:坐標(biāo)(100,200)、函數(shù)返回多值、字典的鍵)
集合自動去重、集合運算去重(如:列表去重)、數(shù)據(jù)對比(如:兩個列表的交集/差集)
字典鍵值對映射、快速查找存儲有明確關(guān)聯(lián)關(guān)系的數(shù)據(jù)(如:用戶信息、配置項、緩存數(shù)據(jù))

新手避坑指南

  1. 列表是可變類型,不能作為字典的鍵/集合的元素(會報錯);
  2. 元組定義單元素時,必須加逗號t=(10,) 而非 t=(10));
  3. 集合/字典的鍵僅支持可哈希類型(數(shù)字/字符串/元組),不支持列表/集合/字典;
  4. 字典取值優(yōu)先用 get() 方法,避免鍵不存在導(dǎo)致的 KeyError;
  5. 列表去重最快方式是 list(set(lst)),但會打亂原順序(需保留順序可手動遍歷)。

總結(jié)

  1. 核心區(qū)分維度:有序/無序、可變/不可變、元素是否唯一是區(qū)分四大結(jié)構(gòu)的關(guān)鍵——列表/元組有序,集合無序(字典3.7+有序);列表/集合/字典可變,元組不可變;集合/字典鍵唯一,列表/元組可重復(fù)。
  2. 使用選型原則:需要有序修改用列表,固定數(shù)據(jù)用元組,去重/數(shù)據(jù)對比用集合,鍵值對查找用字典。
  3. 新手核心技巧:列表/元組用索引提取元素,字典用鍵提取,集合只能遍歷;類型轉(zhuǎn)換時注意集合自動去重、字典需鍵值對匹配。

以上就是一文拆解Python的四大核心數(shù)據(jù)結(jié)構(gòu)(列表/元組/集合/字典)的詳細(xì)內(nèi)容,更多關(guān)于Python數(shù)據(jù)結(jié)構(gòu)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 利用Python繪制數(shù)據(jù)的瀑布圖的教程

    利用Python繪制數(shù)據(jù)的瀑布圖的教程

    這篇文章主要介紹了利用Python繪制數(shù)據(jù)的瀑布圖的教程,教程中主要用到Pandas和matplotlib這兩個庫,需要的朋友可以參考下
    2015-04-04
  • Python學(xué)習(xí)筆記之圖片人臉檢測識別實例教程

    Python學(xué)習(xí)筆記之圖片人臉檢測識別實例教程

    這篇文章主要給大家介紹了關(guān)于Python學(xué)習(xí)筆記之圖片人臉檢測識別的相關(guān)資料,文中通過示例代碼以及圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Python使用pyenv實現(xiàn)多環(huán)境管理

    Python使用pyenv實現(xiàn)多環(huán)境管理

    這篇文章主要介紹了Python使用pyenv實現(xiàn)多環(huán)境管理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Python數(shù)據(jù)可視化完全指南之Matplotlib+Seaborn+Plotly用法詳解

    Python數(shù)據(jù)可視化完全指南之Matplotlib+Seaborn+Plotly用法詳解

    本文詳細(xì)介紹了Python數(shù)據(jù)可視化的三大主流庫:Matplotlib、Seaborn與Plotly,涵蓋折線圖、柱狀圖、散點圖等多種圖表類型及美化技巧,希望幫助大家全面掌握數(shù)據(jù)可視化技能,提升數(shù)據(jù)呈現(xiàn)效果
    2026-05-05
  • python實現(xiàn)中文輸出的兩種方法

    python實現(xiàn)中文輸出的兩種方法

    這篇文章主要介紹了python實現(xiàn)中文輸出的兩種方法,實例分析了Python操作中文輸出的技巧,需要的朋友可以參考下
    2015-05-05
  • 淺談Python單向鏈表的實現(xiàn)

    淺談Python單向鏈表的實現(xiàn)

    本文給大家簡單介紹了下鏈表的知識,然后用Python模擬一下單鏈表,比較簡單,初學(xué)者可以參考參考,大神可以給我點改進(jìn)意見
    2015-12-12
  • python標(biāo)準(zhǔn)庫ElementTree處理xml

    python標(biāo)準(zhǔn)庫ElementTree處理xml

    這篇文章主要為大家介紹了python標(biāo)準(zhǔn)庫ElementTree處理xml的方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • python生成requirements.txt的兩種方法

    python生成requirements.txt的兩種方法

    這篇文章主要介紹了python生成requirements.txt的兩種方法,每種方法給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • Python正則表達(dá)式中?!的用法詳解

    Python正則表達(dá)式中?!的用法詳解

    在正則表達(dá)式中,零寬斷言是控制匹配邊界的隱形指揮棒,負(fù)向先行斷言(?!pattern)和負(fù)向后行斷言(?<!pattern)堪稱排除大師,能精準(zhǔn)過濾不需要的上下文,本文將結(jié)合Python的re模塊,通過案例拆解其核心用法,需要的朋友可以參考下
    2025-12-12
  • python中Array和DataFrame相互轉(zhuǎn)換的實例講解

    python中Array和DataFrame相互轉(zhuǎn)換的實例講解

    在本篇文章里小編給大家整理的是一篇關(guān)于python中Array和DataFrame相互轉(zhuǎn)換的實例講解內(nèi)容,對此有需要的朋友們可以學(xué)參考下。
    2021-02-02

最新評論

东源县| 龙井市| 阿坝| 获嘉县| 西畴县| 凤冈县| 商城县| 遂溪县| 岢岚县| 全南县| 金沙县| 高淳县| 荥经县| 顺平县| 东阿县| 北票市| 泸溪县| 小金县| 佛冈县| 宜州市| 安西县| 都昌县| 黔南| 德保县| 双流县| 特克斯县| 阳曲县| 临猗县| 丘北县| 清丰县| 青冈县| 边坝县| 崇仁县| 盘山县| 双流县| 曲沃县| 南平市| 新田县| 张家界市| 东兴市| 嘉兴市|