我知道Python 2.x中范围的缺点(它创建了一个对大范围来说效率低下的列表)并且它更快的迭代器对应的xrange.但是在Python 3.x中,range是一个迭代器,xrange被删除.有没有办法用Python 2.x和Python 3.x编写这两个循环,以便代码可以移植并使用迭代器?
# 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
但我正在考虑一些不那么黑客而不是定制的东西.
解决方法:
另一种方法是使用Six模块,该模块提供简单的实用程序来包装Python 2和Python 3之间的差异.它旨在支持无需修改即可在Python 2和3上运行的代码库.