python range xrange
引用Help on built-in function range in module __builtin__:
range(...)
range( stop[, step]) -> list of integers
Return a list containing an arithmetic progression of integers.
range(i, j) returns ; start (!) defaults to 0.
When step is given, it specifies the increment (or decrement).
For example, range(4) returns .The end point is omitted!
These are exactly the valid indices for a list of 4 elements.
根据start与stop指定的范围以及step设定的步长,生成一个list。
>>> range(0,6)
step为2的时候
>>> range(0,6,2)
>>> l=range(0,6)
>>> l
引用
Help on class xrange in module __builtin__:
class xrange(object)
|xrange( stop[, step]) -> xrange object
|
|Like range(), but instead of returning a list, returns an object that
|generates the numbers in the range on demand.For looping, this is
|slightly faster than range() and more memory efficient.
|
|Methods defined here:
|
|__getattribute__(...)
| x.__getattribute__('name') <==> x.name
|
|__getitem__(...)
| x.__getitem__(y) <==> x
|
|__iter__(...)
| x.__iter__() <==> iter(x)
|
|__len__(...)
| x.__len__() <==> len(x)
|
|__reduce__(...)
|
|__repr__(...)
| x.__repr__() <==> repr(x)
|
|__reversed__(...)
| Returns a reverse iterator.
|
|----------------------------------------------------------------------
|Data and other attributes defined here:
|
|__new__ = <built-in method __new__ of type object>
| T.__new__(S, ...) -> a new object with type S, a subtype of T
xrange用法与range完全相同,所不同的是xrange生成的不是一个数组,而是一个generators
>>> list(xrange(0,6))
>>> list(xrange(0,6,2))
因为xrange生成的是一个generators而不是数组,所以当数据很大的时候,使用xrange是有很大优势的。
>>> lst = range(0,7)
>>> lst
>>> for i in range((len(lst)-2)/2,-1,-1):
... print i
...
2
1
0
>>> for i in range(len(lst)-1,-1,-1):
... print i
...
6
5
4
3
2
1
0
参考资料:
http://docs.python.org/2/library/functions.html
http://stackoverflow.com/questions/94935/what-is-the-difference-between-range-and-xrange
页:
[1]