在 Python 编程中,range() 是一个非常常用且基础的内置函数,尤其在循环结构中被广泛使用。它提供了一种生成一系列连续整数的方式,常用于 for 循环中,以控制循环次数或访问序列的索引。
尽管 range() 看似简单,但其功能非常强大,理解它的定义、语法、参数和使用方式,对于编写高效、简洁的 Python 代码至关重要。本文将围绕 range() 函数的定义、语法结构、参数说明、使用技巧以及常见应用场景进行详细讲解,帮助开发者全面掌握这一基础但非常实用的函数。
range() 是 Python 的一个内置函数,用于生成一个不可变的整数序列。它并不会一次性生成所有数字,而是以“惰性”方式生成,只在需要时计算,因此非常节省内存资源。
基本作用
生成整数序列;
控制循环次数;
遍历索引;
与 for 循环结合使用,实现迭代操作。
特点
返回的是 range 类型对象,不是列表;
支持正负数;
不支持浮点数;
可以使用 list() 转换为列表;
适用于迭代器、索引访问等场景。
range() 函数有三种基本形式,分别对应不同的参数组合:
单参数形式:range(stop)
range(stop)从 0 开始,到 stop - 1 结束;
步长默认为 1;
示例:
for i in range(5):
print(i)
# 输出:0 1 2 3 4
双参数形式:range(start, stop)
range(start, stop)从 start 开始,到 stop - 1 结束;
步长默认为 1;
示例:
for i in range(2, 6):
print(i)
# 输出:2 3 4 5
三参数形式:range(start, stop, step)
range(start, stop, step)
start:起始值;
stop:结束值(不包含);
step:步长(每次递增或递减的数值);
示例:
for i in range(1, 10, 2):
print(i)
# 输出:1 3 5 7 9
参数说明总结
所有参数都必须为整数;
start 和 stop 为必填(当使用三参数时);
step 可选,默认为 1;
step 可以为负数,表示逆序生成。
在 for 循环中使用
这是 range() 最常见的使用方式,用于控制循环的执行次数:
for i in range(3):
print("第", i + 1, "次循环")
输出:
第 1 次循环
第 2 次循环
第 3 次循环
与 list() 结合生成整数列表
虽然 range() 本身返回的是一个 range 对象,但可以通过 list() 转换为列表:
numbers = list(range(5))
print(numbers) # 输出 [0, 1, 2, 3, 4]
生成逆序数字序列
通过设置 step 为负数,可以生成从大到小的数字序列:
for i in range(5, 0, -1):
print(i)
# 输出:5 4 3 2 1
用于索引访问
在遍历列表或字符串时,range() 可用于访问索引:
words = ["apple", "banana", "cherry"]
for i in range(len(words)):
print("第", i, "个元素是:", words[i])
与切片操作结合使用
range() 可以与切片操作结合,用于获取序列的一部分:
numbers = list(range(10))
print(numbers[2:7]) # 输出 [2, 3, 4, 5, 6]
控制循环次数
在需要执行固定次数的循环时,range() 是最常用的工具之一:
for i in range(10):
print("执行第", i + 1, "次")
生成数字列表
生成一个数字序列,用于后续处理或展示:
even_numbers = list(range(0, 20, 2)) # 生成0~18之间的偶数
print(even_numbers)
遍历列表索引
在需要访问列表索引和对应元素时非常实用:
fruits = ["apple", "banana", "cherry"]
for index in range(len(fruits)):
print(f"第 {index} 个水果是:{fruits[index]}")
实现数字范围判断
结合 in 运算符,可以判断某个数字是否在指定范围内:
if 5 in range(1, 10):
print("5 在 1 到 9 之间")
用于生成模拟数据
在测试或模拟数据时,可以快速生成一组数字:
import random
data = [random.randint(1, 100) for _ in range(10)]
print("生成的随机数据:", data)
不支持浮点数
range() 的参数必须是整数,不能是浮点数,否则会抛出 TypeError:
range(1.5, 5) # 报错:TypeError: 'float' object cannot be interpreted as an integer
如果需要生成浮点数序列,应使用 numpy 的 arange() 或自定义函数。
生成的序列不包含 stop 值
range(start, stop) 中,生成的数字不包含 stop 值,只包含 start 到 stop - 1:
print(list(range(1, 5))) # 输出 [1, 2, 3, 4]
负数步长的使用
当 step 为负数时,必须保证 start > stop,否则不会生成任何值:
print(list(range(5, 1, -1))) # 输出 [5, 4, 3, 2]
print(list(range(1, 5, -1))) # 输出 []
不能直接用于解包
range() 返回的是一个可迭代对象,不能直接解包为多个变量,除非先转换为列表:
a, b, c = range(3) # 报错:TypeError
a, b, c = list(range(3)) # 正确:a=0, b=1, c=2
空 range 的情况
如果 start >= stop 且 step > 0,或 start <= stop 且 step < 0,则生成空序列:
print(list(range(5, 3))) # 输出 []
print(list(range(3, 5, -1))) # 输出 []
range() 是 Python 中一个非常基础但功能强大的函数,它不仅简化了循环结构的控制,还为索引访问、数字生成、数据模拟等场景提供了高效的解决方案。
声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com
通过出发地、目的地、出发日期等信息查询航班信息。
通过站到站查询火车班次时刻表等信息,同时已集成至聚合MCP Server。火车票订票MCP不仅能赋予你的Agent火车时刻查询,还能支持在线订票能力。
通过车辆vin码查询车辆的过户次数等相关信息
验证银行卡、身份证、姓名、手机号是否一致并返回账户类型
查询个人是否存在高风险行为