跳到主要内容

Python For循环

在Python编程中,循环是一种重要的控制流结构,允许你多次执行同一块代码。其中,for循环是最常用的循环类型之一,它能够遍历任何可迭代对象(如列表、元组、字符串等),使得处理集合数据变得简单高效。

For循环的基本语法

Python的for循环语法非常直观:

python
for 变量 in 可迭代对象:
# 循环体:要执行的代码

在每次循环中,变量会依次获取可迭代对象中的每个元素的值,然后执行循环体中的代码。

简单的For循环示例

遍历列表

python
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
print(fruit)

输出:

苹果
香蕉
橙子

遍历字符串

python
message = "Python"
for char in message:
print(char)

输出:

P
y
t
h
o
n

使用range()函数

range()函数是Python中创建数字序列的一个内置函数,经常与for循环一起使用。

range()的基本用法

python
# range(stop) - 从0开始,到stop-1结束
for i in range(5):
print(i)

输出:

0
1
2
3
4

指定起始值和结束值

python
# range(start, stop) - 从start开始,到stop-1结束
for i in range(2, 6):
print(i)

输出:

2
3
4
5

指定步长

python
# range(start, stop, step) - 从start开始,到stop-1结束,步长为step
for i in range(1, 10, 2):
print(i)

输出:

1
3
5
7
9

For循环中的特殊语句

break语句

break语句用于提前退出循环:

python
for i in range(1, 6):
if i == 3:
break
print(i)

输出:

1
2

continue语句

continue语句用于跳过当前循环的剩余部分,继续下一次循环:

python
for i in range(1, 6):
if i == 3:
continue
print(i)

输出:

1
2
4
5

else子句

Python中的for循环可以有一个else子句,当循环正常完成时(即没有被break语句中断),else子句会执行:

python
for i in range(1, 4):
print(i)
else:
print("循环正常完成!")

输出:

1
2
3
循环正常完成!

如果使用break中断循环:

python
for i in range(1, 4):
if i == 2:
break
print(i)
else:
print("循环正常完成!") # 不会执行

输出:

1

嵌套For循环

循环可以嵌套使用,即在一个循环内部包含另一个循环:

python
for i in range(1, 4):
for j in range(1, 4):
print(f"({i}, {j})", end=" ")
print() # 换行

输出:

(1, 1) (1, 2) (1, 3) 
(2, 1) (2, 2) (2, 3)
(3, 1) (3, 2) (3, 3)

列表推导式

Python提供了一种简洁的语法——列表推导式,可以用一行代码创建新列表:

python
# 生成1到10的平方列表
squares = [x**2 for x in range(1, 11)]
print(squares)

输出:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

列表推导式还可以包含条件判断:

python
# 生成1到10中的偶数平方列表
even_squares = [x**2 for x in range(1, 11) if x % 2 == 0]
print(even_squares)

输出:

[4, 16, 36, 64, 100]

实际应用案例

案例1:计算学生平均成绩

python
scores = [85, 92, 78, 90, 88]
total = 0

for score in scores:
total += score

average = total / len(scores)
print(f"学生的平均成绩是: {average:.2f}")

输出:

学生的平均成绩是: 86.60

案例2:查找列表中的最大值

python
numbers = [23, 45, 12, 67, 89, 34]
max_num = numbers[0] # 假设第一个元素是最大的

for num in numbers:
if num > max_num:
max_num = num

print(f"列表中的最大值是: {max_num}")

输出:

列表中的最大值是: 89

案例3:词频统计

python
text = "Python is amazing and Python is fun"
words = text.split()
word_count = {}

for word in words:
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1

print("词频统计结果:")
for word, count in word_count.items():
print(f"{word}: {count}")

输出:

词频统计结果:
Python: 2
is: 2
amazing: 1
and: 1
fun: 1

遍历多种数据结构

遍历字典

python
student = {
"name": "张三",
"age": 20,
"major": "计算机科学"
}

# 遍历键
for key in student:
print(key)

# 遍历值
for value in student.values():
print(value)

# 同时遍历键和值
for key, value in student.items():
print(f"{key}: {value}")

输出:

name
age
major
张三
20
计算机科学
name: 张三
age: 20
major: 计算机科学

使用enumerate()函数获取索引

python
fruits = ["苹果", "香蕉", "橙子"]
for index, fruit in enumerate(fruits):
print(f"索引 {index}: {fruit}")

输出:

索引 0: 苹果
索引 1: 香蕉
索引 2: 橙子
提示

enumerate()函数可以帮助你同时获取元素的索引和值,默认索引从0开始。你也可以指定起始索引:enumerate(fruits, start=1)

同时遍历多个列表:zip()函数

python
names = ["张三", "李四", "王五"]
ages = [20, 22, 21]

for name, age in zip(names, ages):
print(f"{name}今年{age}岁")

输出:

张三今年20岁
李四今年22岁
王五今年21岁

For循环的常见陷阱

在循环中修改迭代对象

python
# 错误示范:在遍历列表时修改列表
numbers = [1, 2, 3, 4, 5]
for num in numbers:
if num % 2 == 0:
numbers.remove(num) # 这会导致问题!

print(numbers) # 结果可能不是你期望的

输出:

[1, 3, 5]  # 看起来正确,但过程有问题
警告

上面的代码看似正确移除了所有偶数,但实际上是有问题的。当移除一个元素后,列表的长度变短,索引也会改变,可能会导致某些元素被跳过。正确的做法是使用列表解析或创建新列表。

python
# 正确做法
numbers = [1, 2, 3, 4, 5]
numbers = [num for num in numbers if num % 2 != 0] # 使用列表推导式
print(numbers)

总结

Python的for循环是一个强大而灵活的工具,它允许你有效地遍历和处理各种数据结构。本文介绍了:

  1. for循环的基本语法和工作原理
  2. 使用range()函数生成数字序列
  3. 循环控制语句:breakcontinueelse子句
  4. 嵌套循环的使用
  5. 列表推导式作为for循环的简洁替代
  6. 遍历各种数据结构的方法
  7. 使用enumerate()zip()函数增强循环功能
  8. for循环的一些常见陷阱和最佳实践

掌握for循环是Python编程的基础,它将帮助你更有效地编写代码处理数据。

练习

  1. 编写一个程序,打印出1到100中所有能被3整除的数字。
  2. 创建一个程序,接受一个字符串,计算其中每个字符出现的次数。
  3. 编写一个程序,使用嵌套循环打印出九九乘法表。
  4. 使用列表推导式创建一个包含1到50中所有素数的列表。
  5. 编写一个程序,遍历一个字典,打印出值大于10的所有键。
学习建议

理解循环的概念很重要,但真正掌握需要通过大量的练习和实际应用。尝试编写自己的程序,用for循环解决实际问题,这样可以更好地巩固所学知识。