我知道在Python 2.x中使用range
存在缺点(它会创建一个列表,对于大范围的数据不高效),而更快的迭代器xrange
则成为了替代品。然而,在Python 3.x中,range
已经变成了一个迭代器,而xrange
则被取消了。有没有一种方法可以编写这两个循环,使得代码具有可移植性并且使用迭代器呢?
# Python 2.x
for i in xrange(a_lot):
use_i_in_someway(i)
# Python 3.x
for i in range(a_lot):
use_i_in_someway(i)
我知道有人可能会做类似这样的事情:
if(platform.python_version_tuple()[0] == '3'):
xrange = range
但我在考虑一些不那么hack-ish且非定制的东西。
xrange(2**100)
-> OverflowError: long int too large to convert to int - jfs