range()函数

在C语言中,如果想要循环一个变量从1到100,要怎么写呢?

for(i = 1,i<=100,i++)

你在C的代码中,几乎随处可见上面的for循环。Python非常贴心,为我们设计了range函数,直接实现上面的功能。range函数是内置函数,无须特别导入,在任何地方都可以直接使用它。下面看一下具体用法:

1.提供一个数字参数,直接遍历数字:

for i in range(10):
    print(i) 

## 结果:
0
1
2
3
4
5
6
7
8
9

从结果中,可以看出,只给一个数字类型参数,range会遍历从0到参数减1的数字。要特别注意,range默认从0开始,到参数减1,也就是左闭右开的规则,这也是Python很多地方的规则,比如切片。

2.也可以指定遍历的区间:

for i in range(1, 12):
    print(i)

## 结果:
1
2
3
4
5
6
7
8
9
10
11

类似range(1, 12)的调用,会遍历从1到11的数字,左闭右开.

3.还可以指定步长,就像切片一样

for i in range(1, 12, 2):
    print(i)

## 结果:
1
3
5
7
9
11    

4.但更多的时候是结合range和len函数,遍历一个序列的索引

a = ['Google', 'Baidu', 'Huawei', 'Taobao', 'QQ']
for i in range(len(a)):
    print(i, a[i]) 

range函数是Python使用频率非常高的一个内置函数,它除了以上的使用特点外,还具有类似生成器的特性,这里先看个例子:

for i in range(1000000000000000000000000000000000):
    print(i)
    if i > 10:
        break

range函数的参数可以是非常大的数,例如1到10000000000000000000000000。但是,需要明确的是,range函数并不会在内存中一次性生成如此多的数,否则会导致内存溢出的问题。相反,range函数的实现机制是按需生成数值。

range函数会根据参数的起始值、终止值和步长来生成一个可迭代的数值序列。当你使用for循环来迭代这个序列时,range函数会根据需要逐个生成数值,并将其提供给循环体。这种按需生成的方式既节省了内存,又可以处理非常大的范围。

此外,需要注意的是,如果你将range函数的结果直接打印或使用,而没有在循环中进行迭代,你将不会看到任何结果,也不会引发异常。这是因为range函数返回的是一个可迭代对象,只有在循环中使用它时才会逐个获取数值。如果需要查看range函数生成的数值序列,可以将其转换为列表或使用其他迭代方法来获取数值。

>>> for i in range(1, 10, -2):
    print(i)

# 什么都没发生    
>>> for i in range(10, 1):
    print(i)

# 什么都没发生    
>>> 

但是如果这么做,却是可以的:

>>> for i in range(10,1,-1):print(i)

10
9
8
7
6
5
4
3
2

总结出什么经验了吗?如果你要用负数步长,那么你的区间设定就要从大到小;如果你的区间设定是从大到小,那么你就需要使用负数步长,这和列表的切片特性是一样样的。

标签: python, python下载, Python教程, Python技术, Python学习, Python学习教程, Python语言, Python开发, Python入门教程, Python进阶教程, Python高级教程, Python面试题, Python笔试题, Python编程思想