在编程中,循环是一种非常常见的控制结构。很多时候,我们需要重复做一些事情,比如遍历列表、处理数据、尝试直到成功等。这时候,就离不开循环了。Python 提供了两种主要的循环结构:for
循环 和 while
循环。本篇文章会从基础到进阶,带你全面掌握 Python 中的循环。
参考文章:Python 循环 | 简单一点学习 easyeasy.me
目录
- 什么是循环?
- for 循环基础用法
- while 循环基础用法
- 循环控制语句:break、continue、else
- 循环中的 range() 函数
- 遍历常见数据结构(列表、字典、集合、字符串)
- 嵌套循环
- 列表推导式中的循环
- 循环的常见坑和优化建议
1. 什么是循环?
循环就是让程序“重复做某件事”。比如:
print("Hello")
print("Hello")
print("Hello")
你可以用循环来写得更简单:
for i in range(3):print("Hello")
这样是不是清爽多了?
2. for 循环基础用法
for
循环常用于“遍历”一些东西,比如列表、字符串、字典等。
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:print(fruit)
输出:
apple
banana
cherry
变量名自定义
你不一定要用 fruit
,变量名可以是你喜欢的,比如:
for x in fruits:print(x)
3. while 循环基础用法
while
循环的意思是:“只要这个条件成立,就一直重复执行”。
count = 0
while count < 5:print("count:", count)count += 1
注意:while
循环容易写成死循环,一定要注意循环条件会终止!
4. 循环控制语句:break、continue、else
break:提前跳出循环
for i in range(10):if i == 5:breakprint(i)
输出:
0
1
2
3
4
continue:跳过这次,继续下一次循环
for i in range(5):if i == 2:continueprint(i)
输出:
0
1
3
4
else:循环正常结束后才执行
for i in range(3):print(i)
else:print("循环结束了")
5. 循环中的 range() 函数
range()
是一个生成数字序列的函数,经常和 for
搭配用。
for i in range(5):print(i)
输出:
0
1
2
3
4
range 的几种写法:
range(stop) # 从 0 到 stop-1
range(start, stop) # 从 start 到 stop-1
range(start, stop, step)# 每次加 step,直到 stop 前结束
例如:
for i in range(2, 10, 2):print(i)
输出:
2
4
6
8
6. 遍历常见数据结构
列表
names = ["Alice", "Bob", "Charlie"]
for name in names:print(name)
字典
遍历键:
d = {"a": 1, "b": 2}
for key in d:print(key, d[key])
遍历键值对:
for key, value in d.items():print(key, value)
集合
s = {"a", "b", "c"}
for item in s:print(item)
字符串
for ch in "hello":print(ch)
7. 嵌套循环
循环里套循环,用于处理二维数据或复杂结构:
for i in range(3):for j in range(2):print(f"i={i}, j={j}")
输出:
i=0, j=0
i=0, j=1
i=1, j=0
i=1, j=1
i=2, j=0
i=2, j=1
8. 列表推导式中的循环
想一行生成列表?看这个:
squares = [x*x for x in range(5)]
print(squares)
输出:
[0, 1, 4, 9, 16]
加上条件:
evens = [x for x in range(10) if x % 2 == 0]
print(evens)
9. 循环的常见坑和优化建议
常见问题
- 忘了更新变量导致死循环
- 写错循环条件
- 不小心修改了遍历的列表
小技巧
- 用
enumerate()
获取索引和值 - 用
zip()
同时遍历多个列表 - 尽量避免嵌套循环太深,影响效率
好的,以下是两个enumerate()
和两个zip()
的示例代码,不带额外解释:
enumerate()
示例 1:
fruits = ['apple', 'banana', 'cherry']
for index, fruit in enumerate(fruits):print(index, fruit)
enumerate()
示例 2:
names = ['Tom', 'Jerry', 'Spike']
for i, name in enumerate(names, start=1):print(f"{i}. {name}")
zip()
示例 1:
names = ['Alice', 'Bob', 'Charlie']
scores = [85, 92, 78]
for name, score in zip(names, scores):print(f"{name}: {score}")
zip()
示例 2:
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
list3 = ['x', 'y', 'z']
for a, b, c in zip(list1, list2, list3):print(a, b, c)