news 2026/4/16 14:45:00

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/4/16 14:44:31

Python 也能干大事-解方程

想掌握用 Python 解决各类方程&#xff08;如一元一次、一元二次、线性方程组、非线性方程&#xff09;的方法&#xff0c;这是 Python 在数学计算领域的核心应用之一&#xff0c;既能求出精确的解析解&#xff0c;也能计算复杂方程的数值近似解。下面结合 Python 的主流数学库…

作者头像 李华
网站建设 2026/4/15 22:07:55

【Java毕设全套源码+文档】基于springboot的大学生平时成绩量化管理系统设计与实现(丰富项目+远程调试+讲解+定制)

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

作者头像 李华
网站建设 2026/4/16 11:07:06

Blender 3MF插件完全指南:5步掌握3D打印格式导入导出

Blender 3MF插件完全指南&#xff1a;5步掌握3D打印格式导入导出 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat Blender 3MF Format插件是专为Blender设计的3D打印格式支…

作者头像 李华
网站建设 2026/4/16 9:21:34

VR虚拟世界对话系统:IndexTTS 2.0实时驱动角色发声

VR虚拟世界对话系统&#xff1a;IndexTTS 2.0实时驱动角色发声 在一场虚拟演唱会中&#xff0c;数字偶像正用温柔的声线演唱一首激昂的摇滚歌曲——这不是技术故障&#xff0c;而是设计意图。观众听到的是A歌手的声音、B情绪的能量表达&#xff0c;且每一句歌词都精准卡在画面转…

作者头像 李华
网站建设 2026/4/16 9:21:42

终极指南:GB/T 7714标准在Zotero中的极简配置方案

终极指南&#xff1a;GB/T 7714标准在Zotero中的极简配置方案 【免费下载链接】Chinese-STD-GB-T-7714-related-csl GB/T 7714相关的csl以及Zotero使用技巧及教程。 项目地址: https://gitcode.com/gh_mirrors/chi/Chinese-STD-GB-T-7714-related-csl 还在为论文参考文献…

作者头像 李华