Python for+range

我们先打开CMD,在交互式界面上看range的用法。

在Python3和Python2中,range是不一样的,在cmd界面Python2中,打印range(10),会显示[1,2,3,4,5,6,7,8,9]。顾头不顾尾的原则,0要,10不要。

在cmd界面Python3中,打印range(10)。

Python3给我们做了一步空间上的优化,它是一个迭代器,这个还是得到我们讲可迭代对象的时候才能讲。

我可以简单的给你做个比喻,在Python2的range(10),相当于给了我们一个筐,筐里装了10个鸡蛋。但是在Python3的range(10),相当于给了我们一只可以下10个鸡蛋的老母鸡。

刚刚我们说Python3的range给我们做了一步空间上的优化,大家现在想是一筐鸡蛋更占空间还是一只会下蛋的老母鸡更占空间,可能10个鸡蛋不好判断,那么1000个鸡蛋和会下1000个鸡蛋的老母鸡那个更占空间?

肯定是1000个鸡蛋更占空间,我们往更夸张的想法去想。如果你写了一个range一个亿,那Python2就真的会给你生成一个亿数字的列表,直接把内存给撑爆。但是Python3不会,因为是一个迭代器,一只会下蛋的老母鸡它就只占一个内存地址。你每次要下蛋的时候就给它发个请求,你给我下个蛋,它就会下个蛋。这样能理解吧。

虽然Python2和Python3里面range有些不一样,但是我们在for循环加range的时候用法还是一样的。

for i in range(10):
    print('于谦')

对于Python3来说,每次循环都是告诉这个可以下10个鸡蛋的老母鸡,给我下个蛋,直到把10个蛋全部下完,就循环了10次。

虽然原理不同,但是用法和结果还是一样的,都会打印10次于谦。

未经允许不得转载:445IT之家 » Python for+range

赞 (0) 打赏

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏