易百教程

55、range 和 xrange 有什么区别?

在大多数情况下,xrangerange 在功能上是完全相同的。 它们都提供了一种生成整数列表的方法,供随意使用。 唯一的区别是 range 返回一个 Python 列表对象,而 xrange 返回一个 xrange 对象。

这意味着 xrange 实际上并不像 range 那样在运行时生成静态列表。 它使用称为屈服的特殊技术根据需要创建值。 这种技术与一种称为生成器的对象一起使用。 这意味着如果有一个非常大的范围,想生成一个列表,比如说十亿,xrange 就是要使用的函数。

如果有一个真正对内存敏感的系统(例如正在使用的手机),则尤其如此,因为 range 将使用尽可能多的内存来创建整数数组,这可能会导致内存错误。 它是一个渴望记忆的野兽。