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

Python遍歷列表、元組、字典、集合的詳細代碼

 更新時間:2026年07月03日 08:26:37   作者:冉成未來  
在 Python 中,列表(list)、元組(tuple)、字典(dict)和集合(set)都是可迭代對象(Iterable),遍歷的核心機制是 for...in 循環(huán),但根據(jù)它們底層數(shù)據(jù)結(jié)構(gòu)的差異,遍歷方式各有特色,下面我為你由淺入深地詳細梳理,需要的朋友可以參考下

引言

在 Python 中,列表(list)、元組(tuple)、字典(dict)和集合(set)都是可迭代對象(Iterable),遍歷的核心機制是 for...in 循環(huán),但根據(jù)它們底層數(shù)據(jù)結(jié)構(gòu)的差異(序列、映射、哈希表),遍歷方式各有特色。

下面我為你由淺入深地詳細梳理,并特別針對集合(Set)進行深度擴展

一、遍歷列表(List)與元組(Tuple)

列表和元組都是有序序列,遍歷方式完全通用(元組不可變,但遍歷語法一致)。

1. 直接遍歷元素(最常用)

直接取出容器內(nèi)的每個元素。

lst = ['a', 'b', 'c']
for item in lst:
    print(item)  # 輸出: a, b, c

2. 通過索引遍歷(range+ 長度)

適用于需要修改元素值或需要知道元素位置下標時。

for i in range(len(lst)):
    print(f"索引{i}: {lst[i]}")

3. 同時獲取索引和元素(enumerate)——Pythonic 推薦

省去手動維護下標的麻煩,效率高且優(yōu)雅。

for index, value in enumerate(lst):
    print(f"第{index}個元素是{value}")

# 可以自定義起始序號
for index, value in enumerate(lst, start=1):
    print(f"第{index}個元素是{value}")

4. 反向遍歷(reversed)

不修改原列表,生成反向迭代器。

for item in reversed(lst):
    print(item)  # 輸出: c, b, a

5. 并行遍歷多個序列(zip)

同時拉取多個列表的對應位置元素。

names = ['A', 'B']
scores = [90, 85]
for name, score in zip(names, scores):
    print(f"{name}: {score}")

6. 使用while循環(huán)(通用,但不推薦用于單純遍歷)

底層通過下標控制,適合復雜退出條件,但書寫繁瑣。

i = 0
while i < len(lst):
    print(lst[i])
    i += 1

二、遍歷字典(Dict)

字典是鍵值對(Key-Value)映射結(jié)構(gòu),Python 3.7+ 保證插入順序。

1. 直接遍歷(默認遍歷鍵keys())

d = {'name': 'Tom', 'age': 18}
for key in d:
    print(key)  # 輸出: name, age
# 等價于 for key in d.keys():

2. 遍歷值(values())

只關(guān)心數(shù)據(jù),不關(guān)心標簽。

for value in d.values():
    print(value)  # 輸出: Tom, 18

3. 同時遍歷鍵和值(items())——最常用

解包元組,直接獲取完整數(shù)據(jù)。

for key, value in d.items():
    print(f"{key} -> {value}")

4. 遍歷字典時修改內(nèi)容(需轉(zhuǎn)換為列表)

重點:遍歷過程中直接修改字典大?。ㄔ鰟h)會報 RuntimeError。解決辦法是把視圖轉(zhuǎn)為列表再遍歷。

# 錯誤示范:for k in d: del d[k]  # 報錯!
# 正確做法:
for k in list(d.keys()):
    if k == 'age':
        del d[k]

三、遍歷集合(Set)—— 基礎篇

集合是無序(嚴格說是有序但開發(fā)者不可依賴)、元素唯一的哈希表。

1. 標準for循環(huán)遍歷元素

s = {1, 2, 3, 'a'}
for item in s:
    print(item)  # 每次運行順序可能不同(如 a, 1, 2, 3)

2. 使用enumerate獲取人為序號

由于集合無序,“索引”在此處僅代表遍歷到第幾個元素,不代表物理位置。

for idx, item in enumerate(s):
    print(f"第{idx}個取出的元素是: {item}")

3. 使用迭代器(iter和next)

底層實現(xiàn),通常用于手動精細控制。

it = iter(s)
while True:
    try:
        item = next(it)
        print(item)
    except StopIteration:
        break

4. 集合推導式(Comprehension)

本質(zhì)上也是一種遍歷并生成新集合的語法糖。

new_set = {x*2 for x in s if isinstance(x, int)}

注意:集合不支持索引訪問(如 s[0]),也不支持切片,因此無法通過 range(len(s)) 的方式按位置遍歷。

四、深入詳解 Python 中的集合(Set)

既然你要“詳細介紹”,我把集合從底層原理到實戰(zhàn)細節(jié)徹底展開。

1. 核心特性

  • 無序性:基于哈希表(Hash Table)實現(xiàn),元素存放位置由哈希值決定,不維護插入順序(雖然 CPython 3.6 后實現(xiàn)上保留了插入順序,但官方文檔不保證,請勿依賴)。
  • 唯一性:自動去重,任何兩個相等的元素(==)只會保留一個。
  • 元素必須可哈希(Hashable):不可變類型(int, str, tuple)可以放入;可變類型(list, dict, set)不能放入,否則報 TypeError: unhashable type。

2. 創(chuàng)建集合的坑

a = {}          # 這是空字典,不是集合!
b = set()       # 這是正確的空集合
c = {1, 2, 3}   # 非空集合

3. 增刪改查(核心方法)

方法作用注意事項
add(elem)添加元素如果已存在,則無效果
update(iterable)合并另一個可迭代對象(批量加)相當于 `
remove(elem)刪除元素元素不存在會報錯(KeyError)
discard(elem)刪除元素元素不存在也不會報錯(推薦)
pop()隨機彈出一個元素空集合調(diào)用會報錯
clear()清空集合-

4. 集合數(shù)學運算(高頻考點)

這是集合相比其他數(shù)據(jù)結(jié)構(gòu)最強大的功能,性能極高(基于哈希碰撞檢測)。

運算操作符方法名含義
并集|union()兩者加起來的所有元素
交集&intersection()兩者共有的元素
差集-difference()在 A 但不在 B 中的元素
對稱差集^symmetric_difference()只屬于其中一個集合的元素(剔除共有)
子集/超集<= / >=issubset() / issuperset()判斷包含關(guān)系
是否不相交-isdisjoint()沒有交集返回 True
A = {1, 2, 3}
B = {3, 4, 5}
print(A - B)  # {1, 2}
print(A & B)  # {3}
print(A ^ B)  # {1, 2, 4, 5}

5. 巨大的性能優(yōu)勢 —— 成員檢測

  • 列表(List)if x in list 時間復雜度 O(n)(遍歷查找)。
  • 集合(Set)if x in set 時間復雜度 O(1)(哈希直接命中)。
    實戰(zhàn)建議:如果需要頻繁判斷某個元素是否存在,務必先將列表轉(zhuǎn)為集合再判斷。

6. 不可變集合 ——frozenset

既然集合不能包含集合(因為可變),但業(yè)務上可能需要嵌套結(jié)構(gòu)。frozenset 是集合的不可變版本,可以作為字典的鍵或另一個集合的元素。

fs = frozenset([1, 2, 3])
d = {fs: "value"}  # 合法

7. 遍歷集合時修改集合(同樣不安全)

和字典一樣,遍歷中修改集合大小會報錯。解決方案:遍歷其副本。

s = {1, 2, 3, 4}
for item in list(s):  # 轉(zhuǎn)換為列表副本
    if item % 2 == 0:
        s.remove(item)
print(s)  # {1, 3}

總結(jié)對比(快速記憶)

數(shù)據(jù)結(jié)構(gòu)遍歷常用方式是否有序是否允許重復能否索引
列表for item in list,enumerate???
元組同上???
字典for k,v in dict.items()? (3.7+)鍵唯一,值隨意按鍵名 dict[key]
集合for item in set? (不可依賴)? (自動去重)? (哈希表無序)

最后送給你一條 Python 之禪:“Flat is better than nested.” 遍歷時優(yōu)先使用 for...in 直接解包,少用 range(len()),代碼會更具可讀性。

以上就是Python遍歷列表、元組、字典、集合的詳細代碼的詳細內(nèi)容,更多關(guān)于Python遍歷列表、元組、字典、集合的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python 編碼規(guī)范整理

    python 編碼規(guī)范整理

    這篇文章主要介紹了python 編碼規(guī)范整理,需要的朋友可以參考下
    2018-05-05
  • numpy中索引和切片詳解

    numpy中索引和切片詳解

    這篇文章主要介紹了numpy中索引和切片詳解,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • 基于Python搭建簡易HTTP服務的兩種方案

    基于Python搭建簡易HTTP服務的兩種方案

    本描述介紹了兩種基于Python的輕量級HTTP服務方案,方案一通過一行命令啟動極簡文件下載服務,適用于臨時文件共享;方案二則支持文件上傳下載、預覽功能,適合局域網(wǎng)內(nèi)文件傳輸需求,需要的朋友可以參考下
    2026-06-06
  • python字符串切片及常用方法示例詳解

    python字符串切片及常用方法示例詳解

    這篇文章主要介紹了python字符串切片及常用方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • python繪制立方體的方法

    python繪制立方體的方法

    這篇文章主要為大家詳細介紹了python繪制立方體的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • python標準庫sys和OS的函數(shù)使用方法與實例詳解

    python標準庫sys和OS的函數(shù)使用方法與實例詳解

    這篇文章主要介紹了python標準庫sys和OS的函數(shù)使用方法與實例詳解,需要的朋友可以參考下
    2020-02-02
  • NumPy 如何生成多維數(shù)組的方法

    NumPy 如何生成多維數(shù)組的方法

    這篇文章主要介紹了NumPy 如何生成多維數(shù)組的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • Python如何實現(xiàn)macOS系統(tǒng)代理的設置

    Python如何實現(xiàn)macOS系統(tǒng)代理的設置

    這篇文章主要為大家詳細介紹了Python如何實現(xiàn)macOS系統(tǒng)代理的設置,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-01-01
  • 簡單示例解析python爬蟲IP的使用(小白篇)

    簡單示例解析python爬蟲IP的使用(小白篇)

    這篇文章主要為大家通過簡單示例解析python爬蟲IP的使用介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • pandas的resample重采樣的使用

    pandas的resample重采樣的使用

    這篇文章主要介紹了pandas的resample重采樣的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04

最新評論

广州市| 龙川县| 同仁县| 东宁县| 和林格尔县| 永丰县| 山丹县| 称多县| 嘉善县| 石城县| 德保县| 玉树县| 柳河县| 长治市| 耒阳市| 新建县| 始兴县| 永兴县| 永春县| 永安市| 手游| 大埔区| 称多县| 南郑县| 萨迦县| 南郑县| 德兴市| 霸州市| 九寨沟县| 金阳县| 彰武县| 雷州市| 乌拉特中旗| 翁牛特旗| 无棣县| 门源| 瑞丽市| 明溪县| 平顶山市| 固原市| 鄂伦春自治旗|