Does the Python range generator generate all values or yields them progressively?
本问题已经有最佳答案,请猛点这里访问。
当你这样做的时候:
1 2 | for i in range(5): print i |
Python做什么?它是否首先用[0,1,2,3,4]生成一个数组,然后遍历打印它的每个项?类似:
1 2 | for i in [0,1,2,3,4]: print i |
还是在生成时打印每个数字?类似:
Generate 0 assign 0 to i print i
Generate 1 -> assign 1 to i -> print i
Generate 2 -> assign 2 to i -> print i
Generate 3 -> assign 3 to i -> print i
Generate 4 -> assign 4 to i -> print i
更新
我已经为python 2.7添加了标签。我不认为我的问题是特定于版本的,但似乎是这样!
现在我正在使用python 2.7,所以我的问题就是这个。但是我发现比较python 2和python 3范围的信息非常有价值。
在python 2中,
在python 3中,它返回一个内存高效的iterable,它是对象本身带有专用的逻辑和方法,而不是列表。现在
在python 2中,有
最后,在python 3中,如果需要整个列表,请执行以下操作:
1 | >>> list(range(...)) |
它返回一个值列表。试试看
1 | print range(4) |