range()函数
在C语言中,如果想要循环一个变量从1到100,要怎么写呢?
你在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 类似 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]) # i代表索引,a[]代表类表中的元素 range函数是Python使用频率非常高的一个内置函数,它除了以上的使用特点外,还具有类似生成器的特性,这里先看个例子: for i in range(1000000000000000000000000000000000): print(i) if i > 10: break range的参数是个多大的数我反正是眼花了,数不过来,但可以肯定的是,如果为了实现这个for循环,而事先在内存中准备好从1到10000000000000000000000000这么多个数,那么你的内存肯定溢出了,死机是正常的。不用怀疑,大多数情况下程序都是这么干的。不同的是,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 总结出什么经验了吗?如果你要用负数步长,那么你的区间设定就要从大到小;如果你的区间设定是从大到小,那么你就需要使用负数步长,这和列表的切片特性是一样样的。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |