PYTHON__生成器和普通函数的区别
以Range和Xrange为例
Range
>>> range(6) [0, 1, 2, 3, 4, 6 >>>a=range(6) >>>type(a) <type 'list'>
Xrange
>>>xrange(6) xrange(6) >>>list(xrange(6)) [0, 1, 2, 3, 4, 5 >>>b=range(6) >>>type(b) <type 'xrange'>
由上面的示例可以知道:
range是保存成一个list,xrange是每次调用生成一个。要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要直接占用很大的内存空间,需要用到的时候就直接生成一个。所以xrange做循环的性能比range好,尤其是返回很大的时候,尽量用xrange吧,除非你是要返回一个列表。