系统地总结一下Python中关于“遍历”的知识点
来系统地总结一下Python中关于“遍历”(也叫“迭代”)的核心知识点。
一、 核心概念:迭代 (Iteration)
迭代是编程中最基本的操作之一,指的是重复地对一个数据集合中的每一个元素执行相同的操作。在Python中,能被 for
循环遍历的对象都称为可迭代对象 (Iterable),例如列表、字符串、字典、元组等。
二、 最基础的遍历工具:for
循环
这是Python中最常用、最强大的遍历语法。
基本结构:
for 变量 in 可迭代对象:# 对每个变量执行的代码块
示例:
numbers = [1, 2, 3, 4]
for num in numbers:print(num * 2)
三、 遍历不同数据结构的技巧
不同的数据结构有不同的遍历方式和特点。
1. 序列类型 (List, Tuple, String)
它们的遍历方式最直接,都是按顺序逐个访问元素。
- 列表 (List) / 元组 (Tuple):
fruits = ['apple', 'banana', 'cherry'] for fruit in fruits:print(fruit)
- 字符串 (String):
message = "Hello" for char in message:print(char)
2. 映射类型 (Dictionary)
字典的遍历非常灵活,可以分别针对键、值或键值对进行。
- 遍历键 (Keys) - 默认方式
grades = {'数学': 95, '语文': 89} for subject in grades: # 等同于 for subject in grades.keys():print(f"科目: {subject}, 分数: {grades[subject]}")
- 只遍历值 (Values)
for score in grades.values():print(f"分数: {score}")
- 同时遍历键和值 (Key-Value Pairs) - 推荐方式
这是最高效、最直观的方式。for subject, score in grades.items():print(f"科目: {subject}, 分数: {score}")
3. 集合类型 (Set)
集合用于存储不重复的元素,遍历时会访问其中的每一个元素,但不保证顺序(在较新的Python版本中通常是插入顺序,但不应依赖此特性)。
unique_numbers = {1, 3, 2, 3, 1}
for num in unique_numbers:print(num) # 会输出 1, 2, 3 (顺序不定)
四、 增强遍历的“神器”:内置函数
Python提供了几个非常有用的内置函数,让遍历变得更加强大。
1. enumerate()
- 同时获取索引和值
当你需要一边遍历元素,一边知道当前元素是第几个时,用 enumerate()
。
fruits = ['apple', 'banana', 'cherry']
for index, fruit in enumerate(fruits, start=1): # start=1 让索引从1开始print(f"第{index}个水果是: {fruit}")
2. zip()
- 并行遍历多个序列
当你有多个列表,想把它们对应位置的元素配对在一起遍历时,用 zip()
。循环次数由最短的那个序列决定。
names = ['张三', '李四', '王五']
scores = [95, 89, 92]
for name, score in zip(names, scores):print(f"{name}的成绩是: {score}")
3. range()
- 遍历数字序列
当你需要循环固定的次数,或者需要按索引遍历时,range()
是最佳选择。
# 循环5次 (从0到4)
for i in range(5):print(i)# 按索引遍历列表 (不推荐,enumerate更好)
items = [10, 20, 30]
for i in range(len(items)):print(f"索引{i}的值是{items[i]}")
五、 控制循环流程
在循环内部,有时需要提前退出或跳过某些元素。
break
:完全终止并跳出整个循环。for num in [1, 2, 3, 4, 5]:if num == 4:break # 当num等于4时,循环立即停止print(num) # 输出 1, 2, 3
continue
:跳过本次循环的剩余代码,直接进入下一次循环。for num in [1, 2, 3, 4, 5]:if num == 3:continue # 当num等于3时,跳过本次print,继续下一次循环print(num) # 输出 1, 2, 4, 5
六、 更 Pythonic 的遍历方式:推导式 (Comprehensions)
推导式是一种非常强大和简洁的语法,可以在遍历一个序列的同时,生成一个新的序列。
-
列表推导式 (List Comprehension):
# 从一个列表中,创建一个只包含偶数并平方的新列表 numbers = [1, 2, 3, 4, 5] squared_evens = [n**2 for n in numbers if n % 2 == 0] # 结果: [4, 16]
-
字典推导式 (Dictionary Comprehension):
# 快速创建一个键是数字,值是其平方的字典 square_dict = {x: x*x for x in range(5)} # 结果: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
总结表格
遍历需求 | 推荐方法 | 语法示例 |
---|---|---|
遍历列表/元组/字符串 | 直接 for 循环 | for element in my_list: |
遍历字典的键和值 | .items() | for key, value in my_dict.items(): |
遍历时需要索引 | enumerate() | for index, value in enumerate(my_list): |
并行遍历多个列表 | zip() | for item1, item2 in zip(list1, list2): |
循环固定次数 | range() | for i in range(10): |
边遍历边创建新列表 | 列表推导式 | [x*2 for x in old_list] |
掌握了以上这些知识点,就能够应对Python中绝大部分的遍历场景了。