python中的range()函数详解

range() 是 Python 内置的一个函数,用于生成一个整数序列。

python 复制代码
range([start], [stop], [step])

start、stop、step 分别表示序列的起始值、终止值和步长。start 和 step 是可选参数,如果不指定则默认为 0 和 1。

一、range()传递不同的参数

1、传递一个参数时

当只传入一个参数时,表示生成从 0 开始、小于该参数的整数序列。例如:

python 复制代码
>>> range(5)
#range(0, 5)

例子中,range(5) 表示生成一个从 0 开始、小于 5 的整数序列。需要注意的是,实际上 range() 函数返回的是一个 range 类型的对象,并不是一个列表,但在大多数情况下可以像列表一样使用。

2、传递两个参数时

当传入两个参数时,表示生成从 start 开始、小于 stop 的整数序列。例如:

python 复制代码
>>> range(2, 5)
range(2, 5)

这个例子中,range(2, 5) 表示生成一个从 2 开始、小于 5 的整数序列。

3、传递三个参数时

当传入三个参数时,表示生成从 start 开始、每次增加 step、小于 stop 的整数序列。例如:

python 复制代码
>>> range(0, 10, 2)
range(0, 10, 2)

range(0, 10, 2) 表示生成一个从 0 开始、每次增加 2、小于 10 的整数序列。

需要注意的是,当 step 为正数时,stop 必须大于 start,否则将无法生成任何数字。例如:

python 复制代码
>>> range(5, 2)
range(5, 2)

例子中,由于 start=5、stop=2、step=1,因此无法生成任何数字。另外,当 step 为负数时,start 必须大于 stop 才能生成序列。例如:

python 复制代码
>>> range(5, 2, -1)
range(5, 2, -1)

start=5、stop=2、step=-1,因此生成的序列为 5、4、3。

在实际应用中,range() 函数还有许多常见用法。接下来,将详细介绍 range() 函数的各项用法,包括:

  • 使用 range() 构建 for 循环
  • 遍历列表时使用 range(len()) 的用法
  • 利用 range() 生成固定长度的等差数列
  • 利用 range() 生成逆序的整数序列

二、使用 range() 构建 for 循环

range() 函数最常见的用法之一是用于构建 for 循环的迭代器。例如,以下代码演示了如何使用 range() 函数构建一个从 0 到 4 的循环:

python 复制代码
for i in range(5):
    print(i)

range(5) 返回一个包含 5 个元素的整数序列,然后在 for 循环中使用每个元素对变量 i 进行赋值并输出。

需要注意的是,当使用 range() 函数时,循环变量 i 的取值范围为 0 到 n-1。因此,如果需要从 1 开始循环,可以通过加一的方式实现:

python 复制代码
for i in range(1, 6):
    print(i)

三、遍历列表时使用 range(len()) 的用法

在处理列表时,有时需要同时遍历列表的索引和数值。这时可以利用 range(len()) 函数来生成与列表长度相同的整数序列,并在循环中使用该序列的元素作为列表的索引。例如,以下代码演示了如何遍历一个列表并输出其索引和数值:

python 复制代码
fruit_list = ['apple', 'banana', 'orange']
for i in range(len(fruit_list)):
    print('Index:', i, 'Value:', fruit_list[i])


Index: 0 Value: apple
Index: 1 Value: banana
Index: 2 Value: orange

这个例子中,range(len(fruit_list)) 返回包含 3 个元素的整数序列 [0, 1, 2],循环时使用该序列的元素 i 作为 fruit_list 的索引,并通过 fruit_list[i] 访问列表中的元素。

3.1 直接使用for循环遍历列表

需要注意的是,虽然可以通过遍历列表的索引和数值来处理列表,但在 Python 中通常更推荐使用迭代器的方式。例如,可以使用 for 循环来直接遍历列表的每个元素:

python 复制代码
for fruit in fruit_list:
    print(fruit)



apple
banana
orange
相关推荐
AI大模型测试4 分钟前
大龄程序员想转行到AI大模型,好转吗?
人工智能·深度学习·机器学习·ai·语言模型·职场和发展·大模型
ProcessOn官方账号7 分钟前
程序员如何与同龄人拉开差距?这5张让你快速提升认知,打开格局!
深度学习·职场和发展·学习方法
测试秃头怪9 分钟前
面试大厂就靠这份软件测试八股文了【含答案】
自动化测试·软件测试·python·功能测试·面试·职场和发展·单元测试
测试杂货铺10 分钟前
软件测试面试题大全,你要的都在这。。
自动化测试·软件测试·python·功能测试·面试·职场和发展·测试用例
测试大圣11 分钟前
软件测试基础知识总结(超全的)
软件测试·python·功能测试·测试工具·职场和发展·单元测试·测试用例
sww_102623 分钟前
RAG检索增强 ETL最佳实战
人工智能·python·spring
童话名剑39 分钟前
序列模型与集束搜索(吴恩达深度学习笔记)
人工智能·笔记·深度学习·机器翻译·seq2seq·集束搜索·编码-解码模型
云栖梦泽1 小时前
易语言开发从入门到精通:补充篇·网络编程进阶+实用爬虫开发·API集成·代理IP配置·异步请求·防封禁优化
开发语言
java1234_小锋1 小时前
Java高频面试题:SpringBoot为什么要禁止循环依赖?
java·开发语言·面试
铅笔侠_小龙虾1 小时前
Flutter Demo
开发语言·javascript·flutter