Python-细节知识点range函数的详解

部署运行你感兴趣的模型镜像

在 Python 中,range 是一个内置函数,用于生成一个不可变的整数序列,通常用于控制循环次数或生成数值范围。以下是详细说明:


基本语法

range(stop)             # 生成 [0, stop) 的整数,步长为1
range(start, stop)      # 生成 [start, stop) 的整数,步长为1
range(start, stop, step) # 生成 [start, stop) 的整数,步长为step(可为负)

关键特性

  1. 惰性计算
    range 不会预先生成所有值,而是按需计算,节省内存(尤其在处理大范围时)。

    r = range(1, 1000000)  # 不会实际存储100万个数字
    
  2. 不可变序列
    生成的序列是只读的,不能直接修改:

    r = range(5)
    r[0] = 10  # 报错: TypeError
    
  3. 支持负步长
    可以生成递减序列:

    list(range(5, 0, -1))  # 输出: [5, 4, 3, 2, 1]
    

常见用途

1. 控制循环次数
for i in range(3):
    print(i)  # 输出: 0 1 2
2. 生成数值列表
numbers = list(range(1, 6))  # [1, 2, 3, 4, 5]
3. 遍历列表索引
fruits = ['apple', 'banana', 'cherry']
for i in range(len(fruits)):
    print(i, fruits[i])  # 输出索引和值
4. 数学运算范围
squares = [x**2 for x in range(10)]  # 生成平方数列表

xrange(Python 2)的区别

  • Python 3 的 range 等效于 Python 2 的 xrange(惰性生成)。
  • Python 2 的 range 会直接生成完整列表(已废弃)。

性能对比

# 内存占用对比
import sys
sys.getsizeof(range(1000000))    # 约48字节(固定大小)
sys.getsizeof(list(range(100)))  # 约900字节(随元素增加)

边界示例

代码示例输出结果(转换为列表后)
range(5)[0, 1, 2, 3, 4]
range(1, 5)[1, 2, 3, 4]
range(0, 10, 2)[0, 2, 4, 6, 8]
range(5, 0, -1)[5, 4, 3, 2, 1]
range(3, 3)[] (空序列,因为start=stop)

注意事项

  1. 参数必须为整数

    range(1.5, 5)  # 报错: TypeError
    
  2. 步长不为零

    range(1, 5, 0)  # 报错: ValueError
    
  3. 空序列条件

    • start >= stop 且步长为正时,返回空序列。
    • start <= stop 且步长为负时,返回空序列。

进阶用法

1. 检查成员关系
5 in range(10)    # True
3.5 in range(4)   # False (仅支持整数)
2. 切片操作
r = range(10)
r_slice = r[2:5]  # 生成新的range对象: range(2, 5)
3. 与其他函数结合
sum(range(101))    # 计算0到100的和: 5050
min(range(5, 15))  # 最小值: 5

总结:range 是 Python 中高效生成整数序列的工具,特别适合循环控制和范围操作,其惰性特性使其在处理大规模数据时优势明显。

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值