Python中的range()函数解析
range()函数是Python中常用的内置函数之一,它可用于生成一系列数字,起点和步长可通过函数参数设置。在Python中非常常见的循环结构即为for循环,而range()函数往往与for循环搭配使用。本文将详细解析Python中的range()函数。
一、函数定义:
range(start, stop[, step])
在创建时可以由指定三个参数,其中step是可选的参数。
start:开始点,默认为0
stop:终止点,但实际循环过程中的最后一次循环是stop-1
step:步长,即数字间隔,默认为1
二、函数返回值:
- 返回一个range对象,包含一个指定范围内的序列(序列中不包含终止值)。
- 返回的range对象可以用于for循环中。
- range()函数的返回值是一个迭代器。
三、range()的应用:
1、使用range()函数生成素数
生成一定范围的素数,可以使用range()函数及其他函数进行计算,以下为在0到100之间生成的素数序列:
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n**(0.5))+1):
if n % i == 0:
return False
return True
prime_list = [x for x in range(101) if is_prime(x)]
print(prime_list)
2、枚举序列时使用range()函数
当需要枚举序列时,可以使用以下方式:
for i in range(len(some_list)):
print i, some_list[i]
3、使用range()函数改变索引值
尤其当需要在并发操作中的嵌套循环中使用数据索引时,以下方式十分有用:
def flatten(nested):
result = []
for sublist in nested:
for element in sublist:
result.append(element)
return result
nested = [[1, 2], [3, 4], [5, 6]]
for index in range(len(nested)):
print range(len(nested))
for element in nested[index]:
print element,index
四、range()与其它Python函数的搭配使用:
1、sum()和range()
在Python中,求和函数sum()的常用方式:
print(sum(range(101)))
2、list()和range()
range()函数返回的是一个迭代器,如果想要获得一个list,可以通过list()函数将它转化为list:
print(list(range(1,11,2)))
3、enumerate()和range()
当在枚举序列时,python标准库里的enumerate函数可以将一个可迭代对象组合成一个返回序列下标和值的迭代器:
for i, j in enumerate(range(1, 10, 2)):
print(i, j)
四、range()的注意点:
1、溢出
在Python2中,计算非常大的数会发生溢出。而在Python3中,range()函数返回的是一个类似于生成器的对象,不会溢出。
2、Python3的迭代器
使用Python3时,返回的是一个迭代器,如果想要获得list,必须使用list()函数进行转化。
3、与np.arange()的比较
与NumPy的arange()函数类似,但是返回的是一个整数序列,而不是浮点数序列。所以,如果想要产生带有小数步长的范围,不能用range()函数,需要使用NumPy库中的arange()函数。
总结:
range()函数是Python中非常常用的内置函数之一,它所生成的数字序列可以用于for循环的迭代中。在编写Python代码时,设计到数字序列的计算与枚举时,range()是一个很有用的工具。注意,在Python3中,range()函数返回的是一个迭代器,每次生成一个数字,所以如果需要获得list,则需要用list()函数进行转化。
