for 循环简介
for 循环用于遍历任何可迭代对象(如列表、元组、字典、集合、字符串等),并对其中的每个元素执行一次相同的操作。
它的基本语法结构是:
for variable in iterable:
# 循环体
# 这里的代码会针对 iterable 中的每个元素执行一次
variable:一个临时变量,用来接收在每次循环中从iterable中取出的元素。in:关键字,用于分隔变量和可迭代对象。iterable:任何可以逐个提供元素的对象,比如一个列表[1, 2, 3]。- 冒号,表示代码块的开始。
- 缩进:循环体内的所有代码都必须缩进(通常是 4 个空格),这是 Python 语法的要求。
简单示例:遍历列表
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(f"I like to eat {fruit}")
输出:
I like to eat apple
I like to eat banana
I like to eat cherry
在这个例子中,for 循环依次从 fruits 列表中取出 "apple", "banana", "cherry",并将它们赋值给变量 fruit,然后执行缩进内的 print 语句。
range() 函数详解
range() 函数本身不是一个列表,而是一个不可变的数字序列类型,它通常与 for 循环结合使用,用来生成一个整数序列,从而控制循环的次数。
range() 函数主要有三种用法:
a) range(stop) - 最常用
只提供一个参数 stop,生成的序列是从 0 开始,到 stop - 1 结束。
- 语法:
range(stop) - 生成的序列:
0, 1, 2, ..., stop-1
示例:打印 0 到 4
for i in range(5):
print(i)
输出:
0
1
2
3
4
注意:range(5) 生成的是 0, 1, 2, 3, 4,不包含 5。
b) range(start, stop) - 指定范围
提供两个参数 start 和 stop,生成的序列是从 start 开始,到 stop - 1 结束。
- 语法:
range(start, stop) - 生成的序列:
start, start+1, start+2, ..., stop-1
示例:打印 5 到 9
for i in range(5, 10):
print(i)
输出:
5
6
7
8
9
c) range(start, stop, step) - 指定步长
提供三个参数 start, stop, 和 step。step 是步长,即每次循环数字增加的值。
- 语法:
range(start, stop, step) - 生成的序列:
start, start+step, start+2*step, ...,直到小于stop(step为正) 或大于stop(step为负)。
示例 1:打印 0 到 10 的偶数 (步长为 2)
for i in range(0, 11, 2): # 11 是 stop,所以会包含 10
print(i)
输出:
0
2
4
6
8
10
示例 2:倒序打印 (步长为 -1)
# 从 10 开始,到 1 结束,每次减 1
for i in range(10, 0, -1):
print(i)
输出:
10
9
8
7
6
5
4
3
2
1
range() 的高级技巧
a) 将 range 转换为列表
range() 对象是惰性的,只有在需要时才会生成数字,如果你想看到它包含的所有数字,可以将其转换为列表 list()。
number_list = list(range(1, 6)) print(number_list)
输出:
[1, 2, 3, 4, 5]
b) 结合 len() 遍历列表索引
如果你需要同时获取列表的索引和值,一个经典的方法是结合 range() 和 len()。
fruits = ["apple", "banana", "cherry"]
# len(fruits) 返回 3, range(3) 生成 0, 1, 2
for i in range(len(fruits)):
print(f"索引 {i}: {fruits[i]}")
输出:
索引 0: apple
索引 1: banana
索引 2: cherry
注意:虽然这种方法可行,但在 Python 中,使用
enumerate()函数是更 Pythonic(更优雅)的方式。
c) 更 Pythonic 的方式:enumerate()
enumerate() 函数可以同时返回索引和元素,代码更清晰易读。
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
print(f"索引 {index}: {fruit}")
输出与上面完全相同。enumerate() 是处理需要索引的循环时的首选。
总结与最佳实践
| 用法 | range() 语法 |
生成的序列 | 示例 |
|---|---|---|---|
| 指定次数 | range(n) |
0, 1, ..., n-1 |
for i in range(5): |
| 指定范围 | range(start, stop) |
start, start+1, ..., stop-1 |
for i in range(2, 7): |
| 指定步长 | range(start, stop, step) |
start, start+step, ... |
for i in range(0, 10, 2): |
核心要点:
for循环:用于遍历任何序列(列表、字符串等)。range():用于生成一个数字序列,常用于控制循环次数。range()的上限是 不包含 的。range(5)到4就结束了。- 当需要索引和值时,优先使用
enumerate()而不是range(len(...))。
希望这个详细的解释能帮助你完全理解 Python 中的 for 循环和 range() 函数!
