Python 编程技巧 @ 玩转 For 循环
一、什么是 for 循环?
`for` 循环是 Python 中用于 遍历可迭代对象(如列表、字符串、字典等)的循环结构。
- 核心作用:逐个访问序列中的元素,直到遍历完所有元素或循环被终止。
- 对比 `while` 循环:`for` 循环更适合已知迭代次数或需要遍历集合的场景,而 `while` 循环更适合条件控制的循环。
---
二、基本语法
```python
for 变量 in 可迭代对象:
循环体代码
```
#示例 1:遍历列表
```python
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
```
输出:
```
apple
banana
cherry
```
---
三、常见用法
#1. 遍历字符串
```python
for char in "Hello":
print(char)
```
输出:
```
H
e
l
l
o
```
#2. 结合 range() 函数
`range()` 生成一个整数序列,常用于控制循环次数。
```python
# 打印 0 到 4
for i in range(5):
print(i)
# 指定起始和结束值(含头不含尾)
for i in range(2, 6):
print(i) # 输出 2,3,4,5
# 指定步长
for i in range(1, 10, 2):
print(i) # 输出 1,3,5,7,9
```
#3. 遍历字典
默认遍历字典的键(keys),可用 `.items()` 遍历键值对。
```python
person = {"name": "Alice", "age": 30, "city": "New York"}
# 遍历键
for key in person:
print(key) # 输出 name, age, city
# 遍历键值对
for key, value in person.items():
print(f"{key}: {value}")
```
#4. 嵌套循环
处理多维数据(如二维列表)时常用。
```python
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for row in matrix:
for num in row:
print(num, end=" ")
print()
```
输出:
```
1 2 3
4 5 6
7 8 9
```
---
四、循环控制语句
#1. `break`:提前终止循环
```python
for num in [1, 2, 3, 4, 5]:
if num == 3:
break
print(num) # 输出 1, 2
```
#2. `continue`:跳过当前迭代
```python
for num in [1, 2, 3, 4, 5]:
if num % 2 == 0:
continue
print(num) # 输出 1, 3, 5
```
#3. `else` 子句
当循环正常结束(未被 `break` 终止)时执行。
```python
for num in [1, 3, 5]:
if num % 2 == 0:
print("发现偶数")
break
else:
print("未发现偶数") # 输出:未发现偶数
```
---
五、列表推导式(简洁写法)
将 `for` 循环简化为一行代码生成列表。
```python
# 生成平方数列表
squares = [x2 for x in range(1, 6)]
print(squares) # 输出 [1, 4, 9, 16, 25]
# 带条件的推导式
even_squares = [x2 for x in range(10) if x % 2 == 0]
```
---
六、常见问题与注意事项
1. 不要修改正在遍历的列表
遍历时增删元素可能导致意外结果。若需修改,建议遍历副本:
```python
for item in list.copy():
if condition:
list.remove(item)
```
2. 避免无限循环
`for` 循环通常不会无限循环,但需确保可迭代对象是有限的。
3. 优先直接迭代元素
无需通过索引访问时,直接遍历元素更简洁:
```python
# 不推荐
for i in range(len(fruits)):
print(fruits[i])
# 推荐
for fruit in fruits:
print(fruit)
```
---
七、总结
- `for` 循环用于遍历可迭代对象。
- 结合 `range()` 控制循环次数,结合 `break`/`continue` 控制流程。
- 列表推导式可简化生成列表的逻辑。
通过练习逐步掌握这些用法,即可高效处理大部分迭代任务!