news 2026/5/13 4:34:27

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/5/10 10:44:38

【Java毕设全套源码+文档】基于springboot的在线票务预订平台设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/9 13:14:22

零售珠宝真伪鉴定App图像识别测试报告

背景与重要性 随着珠宝行业线上零售的快速发展&#xff0c;真伪鉴定App已成为消费者信赖的关键工具&#xff0c;尤其依赖图像识别技术&#xff08;如AI驱动的计算机视觉&#xff09;来验证珠宝真伪。这些App通过摄像头扫描珠宝图像&#xff0c;分析特征&#xff08;如钻石切工…

作者头像 李华
网站建设 2026/5/11 17:01:22

5分钟掌握ProtocolLib:Minecraft插件开发的终极数据包处理指南

5分钟掌握ProtocolLib&#xff1a;Minecraft插件开发的终极数据包处理指南 【免费下载链接】ProtocolLib Provides read and write access to the Minecraft protocol with Bukkit. 项目地址: https://gitcode.com/gh_mirrors/pr/ProtocolLib 想要在Minecraft插件开发中…

作者头像 李华
网站建设 2026/5/9 9:56:43

Markdown文档记录IndexTTS 2.0实验过程的最佳实践

IndexTTS 2.0&#xff1a;重新定义语音合成的边界 在短视频日更、虚拟主播24小时直播、AI配音批量生成的时代&#xff0c;我们对语音合成的需求早已超越“能读出来就行”的初级阶段。用户要的是像真人一样的语气起伏&#xff0c;是和画面严丝合缝的节奏控制&#xff0c;甚至是…

作者头像 李华
网站建设 2026/5/9 13:48:25

VideoCaptioner时间轴精准校准5步终极指南:从新手到专家

VideoCaptioner时间轴精准校准5步终极指南&#xff1a;从新手到专家 【免费下载链接】VideoCaptioner &#x1f3ac; 卡卡字幕助手 | VideoCaptioner - 基于 LLM 的智能字幕助手&#xff0c;无需GPU一键高质量字幕视频合成&#xff01;视频字幕生成、断句、校正、字幕翻译全流程…

作者头像 李华