news 2026/8/17 10:06:38

Python 基础—range() 与 np.arange()

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python 基础—range() 与 np.arange()

想系统理解 Python 内置的range()函数与 NumPy 库的np.arange()函数的区别、用法和适用场景,这两个工具都是生成数值序列的核心方法,但在数据类型、内存占用、功能支持上差异显著,掌握它们的区别能帮你在不同场景下选对工具。

一、核心定位与基础用法

1. Python 内置range()

range()是 Python 原生函数,专为整数序列迭代设计,生成的是「可迭代对象」(不是列表 / 数组),采用「惰性求值」(仅在迭代时生成元素),几乎不占用内存。

语法

python

range(start=0, stop, step=1)
  • start:起始值,默认 0(可选);
  • stop:终止值(必须指定,且序列不包含该值);
  • step:步长,默认 1,必须是非 0 整数(正数 / 负数均可)。

基础示例

python

# 示例1:基础用法(只指定stop) r1 = range(5) # 0,1,2,3,4(不包含5) print("range(5)的类型:", type(r1)) # <class 'range'> print("转换为列表查看:", list(r1)) # [0, 1, 2, 3, 4] # 示例2:指定start和stop r2 = range(2, 8) # 2,3,4,5,6,7 print(list(r2)) # [2, 3, 4, 5, 6, 7] # 示例3:指定步长 r3 = range(0, 10, 2) # 0,2,4,6,8 print(list(r3)) # [0, 2, 4, 6, 8] # 示例4:负数步长(倒序) r4 = range(10, 0, -3) # 10,7,4,1 print(list(r4)) # [10, 7, 4, 1]
2. NumPynp.arange()

np.arange()是 NumPy 库的函数,专为数值计算设计,生成的是「NumPy 数组(ndarray)」,会直接存储所有元素(占用内存),支持整数 / 浮点数,可直接参与矩阵、数值运算。

前置准备:需先安装并导入 NumPy:

bash

pip install numpy

python

import numpy as np

语法

python

np.arange(start=0, stop, step=1, dtype=None)
  • 参数含义与range()基本一致,但step支持浮点数
  • dtype:可选,指定数组元素类型(如int32float64)。

基础示例

python

# 示例1:基础用法(等效range,但返回数组) arr1 = np.arange(5) print("np.arange(5)的类型:", type(arr1)) # <class 'numpy.ndarray'> print(arr1) # [0 1 2 3 4] # 示例2:浮点数步长(range不支持) arr2 = np.arange(0, 2, 0.5) # 0,0.5,1,1.5 print(arr2) # [0. 0.5 1. 1.5] # 示例3:指定数据类型 arr3 = np.arange(3, 9, 2, dtype=float) print(arr3) # [3. 5. 7.]

二、核心差异对比(表格)

特性range()np.arange()
所属模块Python 内置(无需导入)NumPy 库(需 import numpy)
返回类型range 可迭代对象ndarray 数组
元素类型仅支持整数支持整数、浮点数
步长限制仅整数(不能为 0)整数 / 浮点数(不能为 0)
内存占用惰性求值,几乎不占内存存储所有元素,占用内存
索引访问需转列表(如 list (r)[2])直接索引(如 arr [2])
数值运算不支持(需转列表 / 数组)支持(如 arr * 2、arr + 5)
适用场景for 循环迭代、简单计数数值计算、数组操作、数据分析

三、实战场景示例

场景 1:循环迭代(优先用 range ())

range()是 for 循环的最优选择,内存效率高:

python

# 用range()遍历1-5 for i in range(1, 6): print(f"当前值:{i}") # 输出: # 当前值:1 # 当前值:2 # 当前值:3 # 当前值:4 # 当前值:5
场景 2:数值计算(必须用 np.arange ())

np.arange()生成的数组可直接参与数学运算,适合数据处理:

python

# 生成0-4的数组,计算平方 arr = np.arange(5) square_arr = arr **2 print("原数组:", arr) # [0 1 2 3 4] print("平方数组:", square_arr) # [ 0 1 4 9 16] # 生成浮点数序列,计算累加 arr_float = np.arange(0, 1, 0.2) sum_arr = arr_float.cumsum() # 累加 print("浮点数序列:", arr_float) # [0. 0.2 0.4 0.6 0.8] print("累加结果:", sum_arr) # [0. 0.2 0.6 1.2 2. ]
场景 3:内存对比(range () 更省内存)

生成超大序列时,range()几乎不占内存,而np.arange()会占用大量内存:

python

# 生成100万个整数的序列 import sys # range对象的内存占用(固定,与长度无关) r = range(1000000) print("range(100万)内存占用:", sys.getsizeof(r), "字节") # 约48字节 # np.arange数组的内存占用(与长度成正比) arr = np.arange(1000000) print("np.arange(100万)内存占用:", sys.getsizeof(arr), "字节") # 约8000096字节(≈8MB)

总结

  1. range()是 Python 内置工具,生成整数可迭代对象,内存高效,优先用于for循环、简单计数等场景。
  2. np.arange()是 NumPy 工具,生成ndarray 数组,支持浮点数和数值运算,优先用于数据分析、数值计算等场景。
  3. 核心选择原则:仅需循环迭代用range(),需数值计算 / 数组操作用np.arange()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/16 9:35:54

Blender 3MF插件完全指南:从安装到精通3D打印模型转换

Blender 3MF插件完全指南&#xff1a;从安装到精通3D打印模型转换 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 还在为3D打印模型在不同软件间转换而头疼吗&#xff1f…

作者头像 李华
网站建设 2026/8/5 2:52:47

从编程新手到项目高手:小熊猫Dev-C++如何重塑你的开发体验

从编程新手到项目高手&#xff1a;小熊猫Dev-C如何重塑你的开发体验 【免费下载链接】Dev-CPP A greatly improved Dev-Cpp 项目地址: https://gitcode.com/gh_mirrors/dev/Dev-CPP 为什么你的第一个C程序总是充满挫折&#xff1f; 还记得第一次尝试编写C程序时的困惑吗…

作者头像 李华
网站建设 2026/8/10 2:10:55

USB接口电路设计要点:深度剖析引脚定义

USB接口电路设计实战指南&#xff1a;从引脚定义到系统级实现你有没有遇到过这样的情况&#xff1f;一个精心设计的嵌入式设备&#xff0c;功能完美、代码稳定&#xff0c;却在USB连接时频频“抽风”——插上电脑不识别、传输一会儿就断开、甚至烧毁端口。更糟的是&#xff0c;…

作者头像 李华
网站建设 2026/8/10 21:28:54

MMD Tools插件完整安装指南:3步实现Blender与MMD完美融合

MMD Tools插件完整安装指南&#xff1a;3步实现Blender与MMD完美融合 【免费下载链接】blender_mmd_tools MMD Tools is a blender addon for importing/exporting Models and Motions of MikuMikuDance. 项目地址: https://gitcode.com/gh_mirrors/bl/blender_mmd_tools …

作者头像 李华
网站建设 2026/7/31 11:21:37

数字频率计测量精度提升方法:深度剖析关键技术因素

数字频率计测量精度提升实战指南&#xff1a;从时基到信号链的深度优化你有没有遇到过这种情况&#xff1f;在实验室里&#xff0c;手里的数字频率计对同一个10 MHz标准信号连续测了五次&#xff0c;结果却是&#xff1a;9.9987 MHz、10.0012 MHz、9.9993 MHz……看似“随机波动…

作者头像 李华
网站建设 2026/8/4 12:50:15

Multisim安装后数据库无法识别?配置文件详解

Multisim启动报错“数据库未找到”&#xff1f;别急&#xff0c;一文搞懂niini与master.db的底层逻辑 你有没有遇到过这样的场景&#xff1a;刚装好Multisim&#xff0c;兴冲冲打开软件准备画个电路&#xff0c;结果弹出一个红色警告框—— “multisim数据库未找到” &#x…

作者头像 李华