适用于Python 2.x和Python 3.x的便携式内存高效范围()

我知道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上运行的代码库.

上一篇:63. Unique Paths II


下一篇:python – 关于内存效率:范围vs xrange,zip vs izip