Python中字符串,列表,元組,集合及字典常見的遍歷方式匯總
字符串遍歷
1. 直接遍歷字符
s = "Hello"
# 方式1: for循環(huán)直接遍歷
for char in s:
print(char) # H e l l o
# 方式2: 使用索引遍歷
for i in range(len(s)):
print(f"索引{i}: {s[i]}")
2. 同時(shí)獲取索引和值
s = "Hello"
# enumerate() 獲取索引和值
for index, char in enumerate(s):
print(f"位置{index}: {char}")
# 從指定索引開始
for index, char in enumerate(s, start=1):
print(f"第{index}個(gè)字符: {char}")
3. 反向遍歷
s = "Hello"
# reversed() 反向遍歷
for char in reversed(s):
print(char) # o l l e H
# 使用索引反向
for i in range(len(s)-1, -1, -1):
print(s[i])
4. 切片遍歷
s = "Hello World"
# 遍歷部分字符串
for char in s[6:]: # 從第6個(gè)字符開始
print(char) # W o r l d
# 步長(zhǎng)遍歷
for char in s[::2]: # 每隔一個(gè)字符
print(char) # H l o W r d
列表遍歷
1. 基本遍歷
my_list = [1, 2, 3, 4, 5]
# 直接遍歷
for item in my_list:
print(item)
# 使用索引遍歷
for i in range(len(my_list)):
print(f"索引{i}: {my_list[i]}")
2. enumerate 遍歷(推薦)
my_list = ['apple', 'banana', 'cherry']
for index, value in enumerate(my_list):
print(f"第{index}個(gè)水果: {value}")
# 指定起始索引
for index, value in enumerate(my_list, start=1):
print(f"水果{index}: {value}")
3. while 循環(huán)遍歷
my_list = [1, 2, 3, 4, 5]
i = 0
while i < len(my_list):
print(my_list[i])
i += 1
4. 列表推導(dǎo)式遍歷
my_list = [1, 2, 3, 4, 5] # 遍歷并處理(創(chuàng)建新列表) squares = [x**2 for x in my_list] print(squares) # [1, 4, 9, 16, 25] # 帶條件的遍歷 evens = [x for x in my_list if x % 2 == 0] print(evens) # [2, 4]
5. zip 遍歷多個(gè)列表
names = ['Alice', 'Bob', 'Charlie']
scores = [85, 92, 78]
# 同時(shí)遍歷兩個(gè)列表
for name, score in zip(names, scores):
print(f"{name}: {score}分")
# 使用enumerate + zip
for i, (name, score) in enumerate(zip(names, scores)):
print(f"第{i+1}名: {name} - {score}分")
6. 反向遍歷
my_list = [1, 2, 3, 4, 5]
# reversed() 反向遍歷
for item in reversed(my_list):
print(item) # 5 4 3 2 1
# 使用切片反向
for item in my_list[::-1]:
print(item) # 5 4 3 2 1
元組遍歷
元組遍歷與列表幾乎相同(元組是不可變的列表)
my_tuple = (1, 2, 3, 4, 5)
# 直接遍歷
for item in my_tuple:
print(item)
# enumerate遍歷
for i, item in enumerate(my_tuple):
print(f"第{i}個(gè)元素: {item}")
# 反向遍歷
for item in reversed(my_tuple):
print(item)
集合遍歷
1. 基本遍歷
my_set = {1, 2, 3, 4, 5}
# 直接遍歷(集合無序,遍歷順序不確定)
for item in my_set:
print(item)
# 注意:集合沒有索引,不能使用索引遍歷
2. 遍歷并轉(zhuǎn)換為有序
my_set = {5, 3, 1, 4, 2}
# 排序后遍歷
for item in sorted(my_set):
print(item) # 1 2 3 4 5
# 反向排序遍歷
for item in sorted(my_set, reverse=True):
print(item) # 5 4 3 2 1
3. 遍歷并檢查成員
my_set = {'apple', 'banana', 'cherry'}
# 遍歷時(shí)檢查
for fruit in my_set:
if 'a' in fruit:
print(f"{fruit} 包含字母'a'")
字典遍歷
1. 遍歷鍵(keys)
my_dict = {'name': 'Alice', 'age': 25, 'city': 'Beijing'}
# 直接遍歷鍵(默認(rèn)方式)
for key in my_dict:
print(f"鍵: {key}")
# 顯式使用keys()
for key in my_dict.keys():
print(f"鍵: {key}")
2. 遍歷值(values)
my_dict = {'name': 'Alice', 'age': 25, 'city': 'Beijing'}
# 遍歷值
for value in my_dict.values():
print(f"值: {value}")
3. 遍歷鍵值對(duì)(items) - 最常用
my_dict = {'name': 'Alice', 'age': 25, 'city': 'Beijing'}
# 同時(shí)獲取鍵和值
for key, value in my_dict.items():
print(f"{key}: {value}")
# 輸出:
# name: Alice
# age: 25
# city: Beijing
4. enumerate 遍歷字典
my_dict = {'name': 'Alice', 'age': 25, 'city': 'Beijing'}
# 遍歷items并獲取索引
for i, (key, value) in enumerate(my_dict.items()):
print(f"第{i}項(xiàng): {key} = {value}")
5. 遍歷排序后的字典
my_dict = {'b': 2, 'a': 1, 'c': 3}
# 按鍵排序遍歷
for key in sorted(my_dict):
print(f"{key}: {my_dict[key]}")
# 按值排序遍歷
for key in sorted(my_dict, key=my_dict.get):
print(f"{key}: {my_dict[key]}")
# 反向排序遍歷
for key in sorted(my_dict, reverse=True):
print(f"{key}: {my_dict[key]}")
6. 字典推導(dǎo)式遍歷
my_dict = {'a': 1, 'b': 2, 'c': 3}
# 遍歷并創(chuàng)建新字典
squared = {k: v**2 for k, v in my_dict.items()}
print(squared) # {'a': 1, 'b': 4, 'c': 9}
# 帶條件的遍歷
filtered = {k: v for k, v in my_dict.items() if v > 1}
print(filtered) # {'b': 2, 'c': 3}
7. 同時(shí)遍歷多個(gè)字典
dict1 = {'a': 1, 'b': 2}
dict2 = {'a': 10, 'b': 20}
# 遍歷相同的鍵
for key in dict1:
if key in dict2:
print(f"{key}: {dict1[key]} + {dict2[key]} = {dict1[key] + dict2[key]}")
高級(jí)遍歷技巧
1. filter 函數(shù)過濾遍歷
# 列表過濾遍歷
numbers = [1, 2, 3, 4, 5, 6]
for num in filter(lambda x: x % 2 == 0, numbers):
print(num) # 2 4 6
# 字典過濾遍歷
my_dict = {'a': 1, 'b': 2, 'c': 3}
for k, v in filter(lambda item: item[1] > 1, my_dict.items()):
print(f"{k}: {v}") # b: 2, c: 3
2. map 函數(shù)映射遍歷
# 列表映射遍歷
numbers = [1, 2, 3]
for num in map(lambda x: x**2, numbers):
print(num) # 1 4 9
3. 生成器表達(dá)式遍歷
# 內(nèi)存友好的大列表遍歷
numbers = range(1000000) # 不立即創(chuàng)建列表
# 使用生成器表達(dá)式
sum_squares = sum(x**2 for x in numbers if x % 2 == 0)
print(sum_squares)
# 遍歷生成器
for square in (x**2 for x in range(5)):
print(square) # 0 1 4 9 16
4. itertools 模塊高級(jí)遍歷
from itertools import chain, product, permutations
# 連接多個(gè)可迭代對(duì)象
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
for item in chain(list1, list2):
print(item) # 1 2 3 a b c
# 笛卡爾積
colors = ['紅', '藍(lán)']
sizes = ['S', 'M']
for color, size in product(colors, sizes):
print(f"{color}{size}") # 紅S 紅M 藍(lán)S 藍(lán)M
# 排列
for p in permutations('ABC', 2):
print(p) # ('A', 'B') ('A', 'C') ('B', 'A') ('B', 'C') ('C', 'A') ('C', 'B')
遍歷方式對(duì)比表
| 數(shù)據(jù)類型 | 常用遍歷方式 | 特點(diǎn) | 示例 |
|---|---|---|---|
| 字符串 | for char in s: | 遍歷字符 | for c in “hello”: |
| enumerate(s) | 帶索引遍歷 | for i, c in enumerate(s): | |
| 列表 | for item in list: | 直接遍歷元素 | for x in [1,2,3]: |
| enumerate(list) | 帶索引遍歷 | for i, x in enumerate(lst): | |
| zip(list1, list2) | 多列表同時(shí)遍歷 | for a,b in zip(l1,l2): | |
| 元組 | 同列表 | 不可變列表 | for x in (1,2,3): |
| 集合 | for item in set: | 無序遍歷 | for x in {1,2,3}: |
| sorted(set) | 有序遍歷 | for x in sorted(s): | |
| 字典 | dict.keys() | 遍歷鍵 | for k in d.keys(): |
| dict.values() | 遍歷值 | for v in d.values(): | |
| dict.items() | 遍歷鍵值對(duì) | for k,v in d.items(): |
1. 優(yōu)先使用 for-in 直接遍歷:最簡(jiǎn)潔,性能好
2. 需要索引時(shí)用 enumerate:比 range(len()) 更優(yōu)雅
3. 字典遍歷用 items():同時(shí)獲取鍵值,效率高
4. 大數(shù)據(jù)用生成器:節(jié)省內(nèi)存,適合大數(shù)據(jù)處理
5. 復(fù)雜遍歷用 itertools:Python標(biāo)準(zhǔn)庫(kù),功能強(qiáng)大
以上就是Python中字符串,列表,元組,集合及字典常見的遍歷方式匯總的詳細(xì)內(nèi)容,更多關(guān)于Python字符串,列表,元組,集合及字典遍歷的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python爬蟲模擬登錄之圖片驗(yàn)證碼實(shí)現(xiàn)詳解
眾所周知python是一個(gè)很強(qiáng)大的語言,它擁有眾多的庫(kù),今天我嘗試了使用python進(jìn)行驗(yàn)證碼的識(shí)別,下面這篇文章主要給大家介紹了關(guān)于python爬蟲模擬登錄之圖片驗(yàn)證碼實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2022-08-08
如何解決pytorch訓(xùn)練過程中CPU內(nèi)存溢出問題
這篇文章主要介紹了如何解決pytorch訓(xùn)練過程中CPU內(nèi)存溢出問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
Pytorch 實(shí)現(xiàn)變量類型轉(zhuǎn)換
這篇文章主要介紹了Pytorch 實(shí)現(xiàn)變量類型轉(zhuǎn)換操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
Python之Numpy的超實(shí)用基礎(chǔ)詳細(xì)教程
這篇文章主要介紹了Python之Numpy的超實(shí)用基礎(chǔ)詳細(xì)教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Python中的google authenticator認(rèn)證過程
文章介紹了使用Python 3.7生成Google Authenticator所需密鑰的步驟,包括使用pyotp模塊生成密鑰、生成二維碼圖片以及通過客戶端掃描二維碼進(jìn)行二次認(rèn)證的實(shí)現(xiàn)原理2024-11-11
Python list和str互轉(zhuǎn)的實(shí)現(xiàn)示例
這篇文章主要介紹了Python list和str互轉(zhuǎn)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11

