杰瑞科技汇

Python中for in range循环如何使用?

核心概念

for...in range(...) 是一个 for 循环,它用于重复执行一段代码。range() 函数是这个循环的关键,它生成一个整数序列,而 for...in 会依次从这个序列中取出每一个数字,赋给循环变量。

Python中for in range循环如何使用?-图1
(图片来源网络,侵删)

它的作用是:“对于某个范围内的每一个数,执行一次下面的代码块。”


range() 函数详解

range() 函数根据传入的参数不同,有三种主要用法,理解这三种用法是掌握 for...in range(...) 的关键。

range(stop) - 生成从 0 开始到 stop-1 的序列

这是 range() 最简单的形式,它生成一个从 0 开始,到 stop (不包括 stop) 结束的整数序列。

语法: range(stop)

Python中for in range循环如何使用?-图2
(图片来源网络,侵删)

特点:

  • 起始值默认为 0。
  • 结束值是 stop,但不包含 stop
  • 步长默认为 1。

示例: 我们想打印数字 0, 1, 2, 3, 4。

# range(5) 会生成序列 0, 1, 2, 3, 4
for i in range(5):
    print(i)

输出:

0
1
2
3
4

可以看到,循环了 5 次,数字从 0 到 4。

Python中for in range循环如何使用?-图3
(图片来源网络,侵删)

range(start, stop) - 生成从 start 开始到 stop-1 的序列

这种形式可以指定一个自定义的起始值。

语法: range(start, stop)

特点:

  • 起始值是 start (包含 start)。
  • 结束值是 stop (不包含 stop)。
  • 步长默认为 1。

示例: 我们想打印数字 5, 6, 7, 8, 9。

# range(5, 10) 会生成序列 5, 6, 7, 8, 9
for i in range(5, 10):
    print(i)

输出:

5
6
7
8
9

start 是 5,stop 是 10,所以循环打印了从 5 到 9 的所有整数。


range(start, stop, step) - 生成从 start 开始,按 step 步长递增/递减到 stop-1 的序列

这是最灵活的形式,可以指定步长,步长可以是正数(递增),也可以是负数(递减)。

语法: range(start, stop, step)

特点:

  • 起始值是 start (包含 start)。
  • 结束值是 stop (不包含 stop)。
  • 每次循环,变量会增加 step 的值。

示例 A: 正数步长(递增) 我们想打印 0 到 10 之间的所有偶数。

# 从 0 开始,到 10 结束(不包含10),每次加 2
for i in range(0, 10, 2):
    print(i)

输出:

0
2
4
6
8

示例 B: 负数步长(递减) 我们想从 10 倒数到 1。

# 从 10 开始,到 0 结束(不包含0),每次减 1
for i in range(10, 0, -1):
    print(i)

输出:

10
9
8
7
6
5
4
3
2
1

注意: 当使用负数步长时,start 必须大于 stop,否则循环体不会执行。


实际应用场景

for...in range(...) 在很多场景中都非常有用。

重复执行操作

如果你想将某段代码执行固定的 N 次。

# 打印 5 次 "Hello, World!"
for _ in range(5):  # 这里我们不需要用到循环变量 i,所以用下划线 _ 代替
    print("Hello, World!")

提示: 当你在循环中不需要使用循环变量时,习惯用下划线 _ 作为变量名,这是一种 Pythonic 的写法,可以告诉阅读代码的人这个变量是“无用的”。

遍历序列的索引

虽然 for item in list: 是更 Pythonic 的方式,但 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

数值计算

计算 1 到 100 的累加和。

total = 0
for i in range(1, 101):  # 1 到 100 (包含100)
    total += i  # total = total + i
print(f"1 到 100 的累加和是: {total}")

输出:

1 到 100 的累加和是: 5050

for...in 直接遍历列表的区别

初学者常常会混淆 for...in range(len(my_list))for...in my_list,它们都能遍历列表,但有本质区别。

特性 for i in range(len(my_list)) for item in my_list
循环变量 获取的是索引 (0, 1, 2, ...) 获取的是元素本身
访问元素 需要通过索引访问:my_list[i] 直接就是元素:item
适用场景 需要知道当前元素的索引时 只关心元素本身,不关心索引时
代码风格 更偏向 C/Java 风格 更 Pythonic、更简洁、更推荐

推荐做法:

  • 如果只需要元素本身,优先使用 for item in my_list
  • 如果需要在循环中修改元素(因为需要知道索引位置),或者需要索引值,再使用 for i in range(len(my_list))

for...in range(...) 是 Python 中一个强大而灵活的工具。

  1. range() 的三种形式:

    • range(5) -> 0, 1, 2, 3, 4
    • range(2, 7) -> 2, 3, 4, 5, 6
    • range(1, 10, 2) -> 1, 3, 5, 7, 9
    • range(8, 2, -2) -> 8, 6, 4
  2. range() 生成的是一个“序列生成器”,它不会一次性在内存中创建所有数字,这在处理大范围数字时非常高效。

  3. 根据你的需求选择正确的遍历方式。 在 90% 的情况下,当你只需要遍历一个序列的元素时,for item in my_list 是更好的选择,当你需要执行固定次数循环或需要索引时,for...in range(...) 是不二之选。

分享:
扫描分享到社交APP
上一篇
下一篇