在大多数情况下,xrange
和 range
在功能上是完全相同的。 它们都提供了一种生成整数列表的方法,供随意使用。 唯一的区别是 range
返回一个 Python 列表对象,而 xrange
返回一个 xrange
对象。
这意味着 xrange
实际上并不像 range
那样在运行时生成静态列表。 它使用称为屈服的特殊技术根据需要创建值。 这种技术与一种称为生成器的对象一起使用。 这意味着如果有一个非常大的范围,想生成一个列表,比如说十亿,xrange 就是要使用的函数。
如果有一个真正对内存敏感的系统(例如正在使用的手机),则尤其如此,因为 range
将使用尽可能多的内存来创建整数数组,这可能会导致内存错误。 它是一个渴望记忆的野兽。