Python遍历列表、字符串和字典的for循环写法示例

顾星河
顾星河
发布时间:2026-10-27| 6人浏览过
原创

假设你正在编写一段脚本,需要批量格式化用户输入的商品清单、检查用户账号字符串中的非法符号,或者统计配置文件里各项参数的值。在 Python 中,for...in 循环是处理这三类任务的核心工具。虽然语法结构统一,但列表、字符串和字典在内存组织与迭代协议上各有侧重:列表是有序元素集合、字符串是不可变字符序列、字典则是基于哈希表的键值映射。本文通过具体代码示例,分门别类讲解这三种基础容器的标准遍历写法、索引获取方式以及实际开发中常见的边界问题。

一、遍历列表(List)的 for 循环写法

列表是 Python 中最常用的有序序列。遍历列表主要有两种需求:一种是只需要读取元素值,另一种是需要同步获取元素在列表中的索引位置。

1. 直接按元素值遍历

当你只需要顺序处理列表中的每一个元素时,直接将迭代变量置于 in 之后即可,代码最为精简清晰:

# 示例:直接获取每个元素
fruits = ["苹果", "香蕉", "橙子", "草莓"]

for fruit in fruits:
    print(f"当前水果: {fruit}")

在每次循环中,变量 fruit 会按顺序绑定到列表中的下一个对象,直到遍历完整个列表。

2. 使用 enumerate() 同步获取索引与元素

如果业务逻辑需要知道当前处理到第几个元素(例如展示编号或进行位置校验),不建议使用传统下标索引计数(如 for i in range(len(fruits))),而推荐使用内置函数 enumerate():

# 示例:同时获取索引与元素,并指定起始序号
fruits = ["苹果", "香蕉", "橙子", "草莓"]

for index, fruit in enumerate(fruits, start=1):
    print(f"第 {index} 个元素是: {fruit}")

enumerate() 会在每次迭代时生成一个包含 (索引, 元素) 的元组,配合元组解包语法直接赋值给 index 和 fruit,可读性极高。

Python遍历列表、字符串和字典的for循环写法示例
图 1: 列表遍历机制与 enumerate 索引映射流程
注意:遍历列表时切勿直接调用 remove() 或 del 删除正在遍历的元素。在迭代过程中修改原列表长度会导致迭代器内部指针错位,从而漏掉部分元素。若需过滤列表,推荐使用列表推导式 [x for x in fruits if condition] 或遍历列表副本 for item in fruits.copy():。

二、遍历字符串(String)的 for 循环写法

在 Python 中,字符串是字符的不可变有序序列。对字符串使用 for 循环时,每次循环迭代的是单个长度为 1 的字符(Unicode 码点)。

1. 逐字符处理与条件判断

最基本的字符串遍历常用于字符统计、符号校验或数据清洗:

# 示例:遍历字符串并过滤数字字符
raw_message = "Order#9527; Total: 180 USD"
digit_chars = []

for char in raw_message:
    if char.isdigit():
        digit_chars.append(char)

order_number = "".join(digit_chars)
print(f"提取的连续数字: {order_number}")  # 输出: 9527180

2. 配合切片进行倒序或步长遍历

如果需要倒序扫描字符或按特定步长抽样,可以结合 Python 的切片机制 [::-1] 配合 for 循环使用:

# 示例:倒序遍历与跳步遍历
word = "PYTHON"

# 倒序输出: N O H T Y P
for char in word[::-1]:
    print(char, end=" ")
print()

# 每隔一个字符读取: P T O
for char in word[::2]:
    print(char, end=" ")
print()
Python遍历列表、字符串和字典的for循环写法示例
图 2: 字符串字符序列与逐字符流水线处理逻辑

三、遍历字典(Dictionary)的 for 循环写法

字典是基于键值对(Key-Value)的哈希映射容器。在遍历字典时,Python 提供了三种不同维度的视图方法:仅键、仅值、键值成对。

1. 默认遍历:遍历所有键(Keys)

直接对字典对象执行 for k in dict_obj 时,Python 默认遍历的是所有的键:

# 示例:默认遍历键
user_profile = {"username": "alex", "role": "admin", "status": "active"}

for key in user_profile:
    print(f"键: {key} -> 值: {user_profile[key]}")

显式调用 user_profile.keys() 与上述默认方式效果完全一致。虽然可以通过 user_profile[key] 取出值,但如果本身就需要同时使用键和值,频繁哈希寻址不是最优写法。

2. 遍历所有值(Values)

当只需要聚合、统计或验证字典中包含的具体数据而无需关注键名称时,使用 .values():

# 示例:仅遍历数值
scores = {"语文": 88, "数学": 95, "英语": 91}
total = 0

for score in scores.values():
    total += score

print(f"总分为: {total}")  # 输出: 274

3. 最推荐:使用 .items() 同时遍历键与值

在绝大多数业务场景下,推荐使用 .items() 视图。它在迭代时直接产出 (key, value) 元组,并通过双变量解包接收:

# 示例:解包键与值
config = {"host": "127.0.0.1", "port": 8080, "timeout": 30}

for key, value in config.items():
    print(f"配置项 {key} = {value}")
Python遍历列表、字符串和字典的for循环写法示例
图 3: 字典三种遍历视图的产出类型与解包方式
注意:在 Python 3 中,遍历字典时如果增删键(例如执行 del user[k] 或 user["new_key"] = val),解释器会抛出 RuntimeError: dictionary changed size during iteration。如需在循环中剔除某些键,应提前固定键列表:for key in list(user.keys()): 或通过字典推导式生成新字典。

四、三种容器遍历特征对照与决策总结

为了在实际编码中快速选择最合理的遍历语法,以下将列表、字符串和字典的迭代特征与典型写法归纳如下:

容器类型 元素特性 基础遍历写法 索引/键值增强写法 修改容器时的安全策略
列表 (List) 有序、可变、允许重复 for item in my_list: for i, item in enumerate(my_list): 不能直接边遍历边 remove;应遍历副本或用推导式
字符串 (String) 有序、不可变单字符 for char in my_str: for i, char in enumerate(my_str): 字符不可原地修改;通过列表收集后使用 join 组合
字典 (Dict) 键唯一、键值映射、无序/保序 for key in my_dict: for k, v in my_dict.items(): 禁止直接增删键;应使用 list(my_dict.keys()) 锁定键视图
Python遍历列表、字符串和字典的for循环写法示例
图 4: Python for 循环在列表、字符串、字典中的执行特征与选型速查

掌握这三种容器在 for 循环中的标准写法,不仅能写出更加 Pythonic、符合 PEP 8 规范的代码,更能从根源上规避迭代过程中的并发修改异常与性能开销。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。