您必须使用Python 3。
在Python 2中,对象zip
和range
确实按照您的建议运行,返回列表。它们被更改为类似生成器的对象,它们按需生成元素,而不是将整个列表扩展到内存中。优势之一是在其典型用例中具有更高的效率(例如,对它们进行迭代)。
“懒惰”版本在Python 2.x中也存在,但是它们具有不同的名称,即xrange
和itertools.izip
。
要将所有输出一次检索到一个熟悉的列表对象中,您可以简单地调用list
以迭代并使用内容:
>>> list(range(3))
[0, 1, 2]
>>> list(zip(range(3), 'abc'))
[(0, 'a'), (1, 'b'), (2, 'c')]