【问题发现】

相信很多使用Python的小伙伴,都用到过range()函数,进行循环或遍历。

for i in range(len(a)):
    print(a[i])

但当我们用得正嗨时,可能突然看到其他作者的代码中用的并不是range()函数,而是arange()函数,就有些困惑,是不是代码写错了?自己写代码时,该用哪个更好,逼格更高呢?

 

其实两者功能十分相似,仅存在一点点区别。为了让大家更清楚地记住和区分它们,接下来将主要介绍它们的各自特点。

 

【问题解析】

1.range()函数和arange()函数最大的区别

前者是Python内置的函数,直接调用即可;后者是numpy中的函数,调用时一般采用np.arange()。

import numpy as np 

for i in np.arange(10):
    print(i)

 

2.range()函数仅支持整数步长

我们知道,range()函数具有3个参数,分别是起点、终点和步长。需要注意的是这3个参数均为整数型,不能设置为浮点型,这也导致了range()函数的返回值同样都是整数型的。

# range()函数的三种使用方法

# 1.仅设置终点参数,默认起点为0,步长为1,返回值范围为[起点,终点)
>>>range(10)
0,1,2,3,4,5,6,7,8,9

# 2.设置起点和终点,步长默认为1,返回值范围为[起点,终点)
>>>range(2,10)
2,3,4,5,6,7,8,9

# 3.设置起点、终点和步长
>>>range(1,10,2)
1,3,5,7,9

# 当设置起点、终点或步长为小数时,将会报错
>>>range(1,10,2.1)
TypeError: 'float' object cannot be interpreted as an integer

 

3.np.arange()函数支持小数步长

当然,在项目开过程中难免会遇到需要小数迭代序列,这时就需要np.arange()函数发挥它的作用了!首先,需要明确range()函数对整数参数的使用,np.arange()函数都能替代。

# np.arange()函数的整数型参数设置

# 1.仅设置终点参数,默认起点为0,步长为1,返回值范围为[起点,终点)
>>>np.arange(10)
0,1,2,3,4,5,6,7,8,9

# 2.设置起点和终点,步长默认为1,返回值范围为[起点,终点)
>>>np.arange(2,10)
2,3,4,5,6,7,8,9

# 3.设置起点、终点和步长
>>>np.arange(1,10,2)
1,3,5,7,9

其次,np.arange()函数的3个参数均可设置为小数,可以最大自由化我们的需求。

# np.arange()函数的整数型参数设置

# 1.终点为小数,默认起点为0.0,步长为1.0
>>>np.arange(10.2)
0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0

# 2.设置起点和终点均为小数,步长默认为1.0,返回值范围为[起点,终点)
>>>np.arange(2.1, 5.1)
2.1,3.1,4.1

# 3.设置起点、终点和步长均为小数
>>>np.arange(1.1, 5.2, 1.1)
1.1,2.2,3.3,4.4

 

4. 两者数据类型不同

range()函数返回的类型为range对象,np.arange()函数返回的类型为array类型对象。作者认为该区别影响不大,不做过多赘述。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐