range与xrange的区别
一、Python中range()与xrange()有什么区别
range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列
range(6) #[0, 1, 2, 3, 4, 5] range(1,6) #[1, 2, 3, 4, 5] range(1,6,2) #[1, 3, 5] #也就是说range()返回的是个列表
xrange用法与 range 完全相同,所不同的是生成的不是一个list对象,而是一个生成器
xrange(6) #xrange(6) list(xrange(6)) #[0, 1, 2, 3, 4, 5] xrange(1,6) #xrange(1, 6) list(xrange(1,6)) #[1, 2, 3, 4, 5] xrange(1,6,2) #xrange(1, 7, 2) list(xrange(1,6,2)) #[1, 3, 5] #xrange()返回的是个生成器
由上面的示例可以知道:要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间,但是后来的Python3版本已经去掉了xrange()函数,而range()函数也返回的是生成器。