0

0

Python range() 函数:实现闭区间迭代的实用指南

聖光之護

聖光之護

发布时间:2025-11-18 12:08:24

|

503人浏览过

|

来源于php中文网

原创

Python range() 函数:实现闭区间迭代的实用指南

python的`range()`函数在默认情况下生成一个左闭右开的序列,即不包含结束值。本文将详细讲解如何通过简单地将`range()`函数的结束参数加一来,实现包含结束值(即闭区间)的迭代。通过具体的代码示例,您将学会如何修改循环逻辑,确保序列中的最后一个数字也能被正确处理,从而满足在数值范围内进行完整检查的需求。

理解 Python range() 函数的基本行为

在Python中,range()函数是一个非常常用的内置函数,用于生成一个整数序列。它通常有三种用法:

  • range(stop):生成从0到stop-1的序列。
  • range(start, stop):生成从start到stop-1的序列。
  • range(start, stop, step):生成从start到stop-1,步长为step的序列。

核心特性是:stop值是排他性的,即序列不包含stop本身。

例如,range(1, 5)会生成序列1, 2, 3, 4。这个特性在很多场景下非常方便,但在某些需要包含结束值的场景中,新手可能会遇到困惑。

遇到的问题:range() 函数的排他性

考虑以下场景:您需要从用户那里获取两个数字,然后检查这两个数字之间(包括这两个数字)的所有整数,找出其中的偶数。

立即学习Python免费学习笔记(深入)”;

假设用户输入了5和10,您期望的偶数列表是[6, 8, 10]。然而,如果使用如下代码:

counter = list(range(2))
numbers = []

for n in counter:
    numbers.append(int(input("Enter the number: ")))
numbers.sort()

print("Range of numbers: ", numbers)

even_num = []

# 原始代码:使用 range(numbers[0], numbers[1])
for n in range(numbers[0], numbers[1]):
    if n == 0:
        pass # 或者直接 continue
    elif n % 2 == 0:
        even_num.append(n)
    # else:
    #     pass # 对于奇数,不做任何操作

print("Even numbers: ", even_num)

当输入5和10时,numbers列表将是[5, 10]。此时,range(numbers[0], numbers[1])实际上是range(5, 10)。根据range()函数的排他性,它会生成序列5, 6, 7, 8, 9。因此,最终输出的偶数列表将是[6, 8],缺少了期望的10。

解决方案:实现闭区间迭代

要解决range()函数不包含结束值的问题,方法非常简单直观:将range()函数的第二个参数(即stop值)加1。

CreateWise AI
CreateWise AI

为播客创作者设计的AI创作工具,AI自动去口癖、提交亮点和生成Show notes、标题等

下载

这样,range(start, stop + 1)将生成从start到stop的序列,从而实现闭区间迭代。

将上述代码中的循环部分修改为:

# 修改后的代码:使用 range(numbers[0], numbers[1] + 1)
for n in range(numbers[0], numbers[1] + 1):
    if n == 0:
        pass
    elif n % 2 == 0:
        even_num.append(n)

让我们用完整的修改后代码来演示:

# 获取用户输入的两个数字
numbers_input = []
for _ in range(2): # 循环两次获取两个数字
    numbers_input.append(int(input("Enter the number: ")))
numbers_input.sort() # 确保 numbers[0] 是较小值,numbers[1] 是较大值

start_range = numbers_input[0]
stop_range = numbers_input[1]

print("Range of numbers: ", numbers_input)

even_num = []

# 核心修改:将 stop_range 加 1,实现闭区间迭代
for n in range(start_range, stop_range + 1):
    # 检查数字是否为偶数
    if n % 2 == 0:
        even_num.append(n)

print("Even numbers: ", even_num)

使用示例输入5和10运行修改后的代码:

Enter the number: 5
Enter the number: 10
Range of numbers:  [5, 10]
Even numbers:  [6, 8, 10]

现在,10被正确地包含在了偶数列表中,符合预期。

注意事项与总结

  1. 适用性广泛: 这种stop + 1的技巧不仅适用于简单的range(start, stop),也适用于带有步长的range(start, stop, step)。只要您希望迭代包含stop值,就可以使用这个方法。
  2. 清晰性: 在代码中明确地使用+ 1可以清晰地表达您的意图,即包含结束值。
  3. 负数步长: 如果使用负数步长(例如range(10, 0, -1)),并且希望包含结束值,则需要将stop值减1(例如range(10, 0 - 1, -1),即range(10, -1, -1))。但这种情况相对少见,且需要根据具体逻辑判断。
  4. 替代方案: 对于需要精确控制序列的场景,也可以考虑使用列表推导式或while循环,但对于简单的数值序列,range()函数配合+ 1是最简洁高效的方法。

通过理解range()函数的默认行为并掌握stop + 1的技巧,您可以更灵活、准确地控制循环的迭代范围,编写出更符合逻辑和需求的Python代码。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
while的用法
while的用法

while的用法是“while 条件: 代码块”,条件是一个表达式,当条件为真时,执行代码块,然后再次判断条件是否为真,如果为真则继续执行代码块,直到条件为假为止。本专题为大家提供while相关的文章、下载、课程内容,供大家免费下载体验。

107

2023.09.25

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

25

2026.03.13

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

44

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

177

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

50

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

92

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

102

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

227

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

530

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 5万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号