python中range和xrange的区别?

range示例:

for i in range(100):
    ...

xrange示例:

for i in xrange(100):
    ...


python中,range和xrange的区别是什么呢?

喜欢这个问题 | 分享 | 新建回答

回答

东方不败

Feb 14, 2019
1 赞

在python2中,range返回的是一个列表(list),而xrange返回的是一个生成器。这是本质的区别。

>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> xrange(10)
xrange(10)

如若面对一个很大的取值,比如666666这个数字,range(666666)肯定会比xrange(666666)占用更多的内存,因为前者返回的是一个很长的列表(list),会占很大内存;而后者返回的是一个生成器。


因此,在for循环中,请习惯性地使用xrange来代替range,这是一个好习惯;会让代码变得更加高效。