
python的`range()`函数在生成数字序列时默认不包含结束值。本文将详细讲解`range()`函数的工作原理,并提供一种简单有效的方法,即通过将结束值加一来实现在循环中包含指定区间终点的迭代。通过实例代码,读者将学会如何灵活控制`range()`函数的行为,以满足不同的编程需求,例如在给定范围内查找偶数时确保包含上限值。
range() 函数是 Python 中用于生成整数序列的内置函数,常用于循环中。它的基本语法有三种形式:
关键特性: 无论哪种形式,range() 函数生成的序列都不包含 stop 参数指定的值。这是 range() 函数设计上的一个重要细节,也是许多初学者容易混淆的地方。
在实际编程中,我们有时需要遍历一个包含上限值的区间。例如,在一个给定数字范围 [A, B] 中查找偶数,我们期望 B 值如果本身是偶数,也应该被包含在结果中。然而,如果直接使用 range(A, B),B 值将永远不会被包含在迭代序列中。
考虑以下代码片段,它尝试在一个用户输入的数字范围内查找偶数:
立即学习“Python免费学习笔记(深入)”;
counter = list(range(2))
numbers = []
for _ in counter: # 使用 _ 表示不关心循环变量
numbers.append(int(input("请输入一个数字: ")))
numbers.sort()
print("数字范围: ", numbers)
even_num = []
# 问题代码:range(numbers[0], numbers[1]) 不包含 numbers[1]
for n in range(numbers[0], numbers[1]):
if n == 0:
pass # 0 不计入偶数或奇数,直接跳过
elif n % 2 == 0:
even_num.append(n)
# else: pass # 奇数无需处理,可以省略此分支
print("偶数: ", even_num)当用户输入 5 和 10 时,numbers 列表将是 [5, 10]。此时,range(numbers[0], numbers[1]) 相当于 range(5, 10),它将生成序列 5, 6, 7, 8, 9。结果导致 10 这个偶数被遗漏了:
请输入一个数字: 5 请输入一个数字: 10 数字范围: [5, 10] 偶数: [6, 8]
显然,我们希望 10 也能被识别为偶数并包含在结果中。
要解决 range() 函数不包含 stop 值的特性,同时又想在迭代中包含指定的上限值,最简单有效的方法是将 stop 值增加 1。
例如,如果希望迭代从 start 到 end_inclusive(包含 end_inclusive),则应使用 range(start, end_inclusive + 1)。这样,range() 函数的“不包含结束值”的规则将作用于 end_inclusive + 1,从而使得 end_inclusive 被恰好包含在生成的序列中。
将上述问题代码中的循环修改为:
# 关键修改:将上限值 numbers[1] 加 1
for n in range(numbers[0], numbers[1] + 1):
# ... 检查偶数的逻辑保持不变 ...下面是修改后的完整代码,它能够正确地包含范围的上限值:
counter = list(range(2))
numbers = []
for _ in counter:
numbers.append(int(input("请输入一个数字: ")))
numbers.sort()
print("数字范围: ", numbers)
even_num = []
# 关键修改:将上限值 numbers[1] 加 1,以包含该值
for n in range(numbers[0], numbers[1] + 1):
if n == 0:
pass # 0 不计入偶数或奇数,直接跳过
elif n % 2 == 0:
even_num.append(n)
# else: pass # 奇数无需处理,可以省略此分支
print("偶数: ", even_num)使用相同的输入 5 和 10 运行此代码,输出将是:
请输入一个数字: 5 请输入一个数字: 10 数字范围: [5, 10] 偶数: [6, 8, 10]
现在,10 已经被正确地包含在偶数列表中。
range() 函数是 Python 中一个强大且常用的工具,但其“不包含结束值”的特性是需要牢记的。当需要在迭代中包含指定的上限值时,简单的技巧是将 range() 函数的 stop 参数增加 1,即使用 range(start, stop_inclusive + 1)。掌握这一技巧,可以帮助您更精确地控制循环行为,编写出符合预期的、健壮的 Python 代码。
以上就是Python range() 函数详解:实现区间端点包含的迭代技巧的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号