range 和xrange

range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列。

比如:

  >>> range(5)
  [01234]
  >>> range(1,5)
  [1234]
  >>> range(0,6,2)
  [024]

xrange 用法与 range 完全相同,所不同的是生成的不是一个list对象,而是一个生成器

  >>> xrange(5)
  xrange(5)//乃生成器
  >>> list(xrange(5))
  [01234]
  >>> xrange(1,5)
  xrange(15)
  >>> list(xrange(1,5))
  [1234]
  >>> xrange(0,6,2)
  xrange(062)
  >>> list(xrange(0,6,2))
  [024]

由上面的示例可以知道:要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间。

xrange 和 range 这两个基本上都是在循环的时候用。

1 for in range(0100):
2     print i
3  
4 for in xrange(0100):
5     print i

这两个输出的结果都是一样的,实际上有很多不同,range会直接生成一个list对象:

1 = range(0,100)
2 print type(a)
3 print a
4 print a[0], a[1]

输出结果:

1 <type 'list'>
2 [0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
3 0 1

而xrange则不会直接生成一个list,而是每次调用返回其中的一个值:所以省内存

1 = xrange(0,100)
2 print type(a)
3 print a
4 print a[0], a[1]

输出结果:

1 <type 'xrange'>
2 xrange(100)
3 0 1

猜你喜欢

转载自blog.csdn.net/fu6543210/article/details/82764278