arange和 range 都是用来生成一系列有序数值的函数,但它们分别属于不同的 Python 库,并且在功能和返回类型上有所区别:

一、Python内置的range()函数:

        range()函数在Python标准库中,主要用于生成一个等差数列的整数序列。

        它不直接生成列表,而是返回一个可迭代对象。

        range() 不占用额外的内存空间存放序列的所有元素,而是动态生成每个需要的值。

        参数通常是三个:range(stop), range(start, stop), 或 range(start, stop, step),分别表示终止位置、起始位置和步长,所有参数都是整数,而且步长默认为1。

二、NumPy库的numpy.arange()函数:

        arange()函数在NumPy库中,它也是用来生成等差数列,但相比 range() 功能更加强大。numpy.arange()` 可以生成浮点数序列,而不仅仅是整数序列。

        它返回的是一个 NumPy 数组(numpy.ndarray`类型),也就是说,它会一次性生成并存储整个序列在内存中。(不需要用循环的原因)

        参数与 range()类似,但允许使用浮点数步长,例如:`numpy.arange(start, stop, step, dtype=None),其中 dtype 参数允许指定输出数组的数据类型。

        总结一下,两者的核心区别在于:

         数据类型:range 生成的序列元素是整数,而 arange 可以生成整数或浮点数序列。

        返回类型:range 返回的是一个可迭代对象,适合节省内存的大规模循环,而 arange 返回的是一个立即生成好的数组。

         应用场景:range 通常用于Python语言的基本循环和迭代,arange 则更多地用于数值计算和数据分析等领域,因为它产生的数组可以直接用于NumPy的其他计算操作。

        下面通过两个例子来说明它们的用法:

        Python内置的range()的例子:

# 生成包含前5个自然数的序列
for i in range(5):
    print(i, end=' ')

# 输出: 0 1 2 3 4 

# 生成从10开始到20结束(不包括20)的序列
for i in range(10, 20):
    print(i, end=' ')

# 输出: 10 11 12 13 14 15 16 17 18 19

# 生成从0开始,每次增加2的序列,直到达到但不包括10
for i in range(0, 10, 2):
    print(i, end=' ')

# 输出: 0 2 4 6 8 

# 注意:range对象可以直接转换成列表查看全部元素
list(range(5))  # 输出: [0, 1, 2, 3, 4]

 python:arange()和range()区别-LMLPHP

       注: 在 Python 中,当我们使用 print() 函数打印多个值时,默认会在每个值之间添加换行符。如果希望在同一行内输出多个值,就需要修改这个默认行为。在提供的例子中加入 end=' ' 参数是为了让每个 print() 函数调用结束后不在末尾添加换行符,而是添加一个空格,这样连续打印出的数字就会排列在同一行上。 

NumPy的numpy.arange()的例子: 

import numpy as np

# 生成包含前5个自然数的数组(默认起点是0,步长是1)
np_arange_int = np.arange(5)
print(np_arange_int)

# 输出: [0 1 2 3 4]

# 生成从0开始到4结束(包含4)的浮点数序列,步长为0.5
np_arange_float = np.arange(0, 4.5, 0.5)
print(np_arange_float)

# 输出: [0.  0.5 1.  1.5 2.  2.5 3.  3.5 4. ]

# 指定数据类型为整数
np_arange_spec_dtype = np.arange(5, dtype=np.int8)
print(np_arange_spec_dtype)

# 输出: [0 1 2 3 4]

python:arange()和range()区别-LMLPHP

04-24 08:09