这个问题有点哲学。 Python 2中有一个出色的itertools
模块,特别是为Python内置函数提供生成器等价物,如map
,filter
,zip
或{{1} }。等价物分别称为slice
,imap
,ifilter
和izip
。据我了解,名称中的前缀 i 表示 i terator。但是islice
有同样的事情:它相当于xrange
返回生成器对象而不是大型列表。那么,为什么它不被称为range
?前缀 x 的实际含义是什么?
答案 0 :(得分:4)
因为xrange()
在它具有迭代器之前被添加到语言中,并且它本身不是迭代器。
xrange()
was added to Python in 1993。 Python 1.0于1994年发布,因此很早就添加了xrange()
。 x
很可能在这里没有特定含义。
但是xrange()
实际上不是迭代器,它是可迭代的;与迭代器不同,您可以多次迭代它。它也是一个序列,因为它有一个长度并且可以被索引。
因此,该对象已重命名为range()
(完全替换Python 2 range()
函数),并且其序列行为已进一步扩展。