Python For循环
在Python编程中,循环是一种重要的控制流结构,允许你多次执行同一块代码。其中,for
循环是最常用的循环类型之一,它能够遍历任何可迭代对象(如列表、元组、字符串等),使得处理集合数据变得简单高效。
For循环的基本语法
Python的for
循环语法非常直观:
for 变量 in 可迭代对象:
# 循环体:要执行的代码
在每次循环中,变量
会依次获取可迭代对象
中的每个元素的值,然后执行循环体中的代码。
简单的For循环示例
遍历列表
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
print(fruit)
输出:
苹果
香蕉
橙子
遍历字符串
message = "Python"
for char in message:
print(char)
输出:
P
y
t
h
o
n
使用range()函数
range()
函数是Python中创建数字序列的一个内置函数,经常与for
循环一起使用。
range()的基本用法
# range(stop) - 从0开始,到stop-1结束
for i in range(5):
print(i)
输出:
0
1
2
3
4
指定起始值和结束值
# range(start, stop) - 从start开始,到stop-1结束
for i in range(2, 6):
print(i)
输出:
2
3
4
5
指定步长
# 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
语句用于提前退出循环:
for i in range(1, 6):
if i == 3:
break
print(i)
输出:
1
2
continue语句
continue
语句用于跳过当前循环的剩余部分,继续下一次循环:
for i in range(1, 6):
if i == 3:
continue
print(i)
输出:
1
2
4
5
else子句
Python中的for
循环可以有一个else
子句,当循环正常完成时(即没有被break
语句中断),else
子句会执行:
for i in range(1, 4):
print(i)
else:
print("循环正常完成!")
输出:
1
2
3
循环正常完成!
如果使用break
中断循环:
for i in range(1, 4):
if i == 2:
break
print(i)
else:
print("循环正常完成!") # 不会执行
输出:
1
嵌套For循环
循环可以嵌套使用,即在一个循环内部包含另一个循环:
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提供了一种简洁的语法——列表推导式,可以用一行代码创建新列表:
# 生成1到10的平方列表
squares = [x**2 for x in range(1, 11)]
print(squares)
输出:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
列表推导式还可以包含条件判断:
# 生成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:计算学生平均成绩
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:查找列表中的最大值
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:词频统计
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
遍历多种数据结构
遍历字典
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()函数获取索引
fruits = ["苹果", "香蕉", "橙子"]
for index, fruit in enumerate(fruits):
print(f"索引 {index}: {fruit}")
输出:
索引 0: 苹果
索引 1: 香蕉
索引 2: 橙子
enumerate()
函数可以帮助你同时获取元素的索引和值,默认索引从0开始。你也可以指定起始索引:enumerate(fruits, start=1)
。
同时遍历多个列表:zip()函数
names = ["张三", "李四", "王五"]
ages = [20, 22, 21]
for name, age in zip(names, ages):
print(f"{name}今年{age}岁")
输出:
张三今年20岁
李四今年22岁
王五今年21岁
For循环的常见陷阱
在循环中修改迭代对象
# 错误示范:在遍历列表时修改列表
numbers = [1, 2, 3, 4, 5]
for num in numbers:
if num % 2 == 0:
numbers.remove(num) # 这会导致问题!
print(numbers) # 结果可能不是你期望的
输出:
[1, 3, 5] # 看起来正确,但过程有问题
上面的代码看似正确移除了所有偶数,但实际上是有问题的。当移除一个元素后,列表的长度变短,索引也会改变,可能会导致某些元素被跳过。正确的做法是使用列表解析或创建新列表。
# 正确做法
numbers = [1, 2, 3, 4, 5]
numbers = [num for num in numbers if num % 2 != 0] # 使用列表推导式
print(numbers)
总结
Python的for
循环是一个强大而灵活的工具,它允许你有效地遍历和处理各种数据结构。本文介绍了:
for
循环的基本语法和工作原理- 使用
range()
函数生成数字序列 - 循环控制语句:
break
、continue
和else
子句 - 嵌套循环的使用
- 列表推导式作为
for
循环的简洁替代 - 遍历各种数据结构的方法
- 使用
enumerate()
和zip()
函数增强循环功能 for
循环的一些常见陷阱和最佳实践
掌握for
循环是Python编程的基础,它将帮助你更有效地编写代码处理数据。
练习
- 编写一个程序,打印出1到100中所有能被3整除的数字。
- 创建一个程序,接受一个字符串,计算其中每个字符出现的次数。
- 编写一个程序,使用嵌套循环打印出九九乘法表。
- 使用列表推导式创建一个包含1到50中所有素数的列表。
- 编写一个程序,遍历一个字典,打印出值大于10的所有键。
理解循环的概念很重要,但真正掌握需要通过大量的练习和实际应用。尝试编写自己的程序,用for
循环解决实际问题,这样可以更好地巩固所学知识。