Python中的range与xrange
range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列。
比如
1 2 3 4 5 6 7 | >>> range(5) [0, 1, 2, 3, 4] >>> range(1,5) [1, 2, 3, 4] >>> range(0,6,2) [0, 2, 4] |
xrange 用法与 range 完全相同,所不同的是生成的不是一个list对象,而是一个生成器。
例如
1 2 3 4 5 6 7 8 9 10 11 12 13 | >>> xrange(5) xrange(5) >>> list(xrange(5)) [0, 1, 2, 3, 4] >>> xrange(1,5) xrange(1, 5) >>> list(xrange(1,5)) [1, 2, 3, 4] >>> xrange(0,6,2) xrange(0, 6, 2) >>> list(xrange(0,6,2)) [0, 2, 4] |
区别就在于,要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间。
所以xrange做循环的性能比range好,尤其是返回很大的时候。尽量用xrange吧,除非你是要返回一个列表。