2010年6月9日 星期三
Python:range 與 xrange 的不同
看了以下的例子便可明白,range 創造了一個 list ,
再從 list 中取值。而 xrange 則創造了一個對象來直接取值。
假如在 loop 中使用,xrange 效率會好很多。
>>> aaa=range(0,10,2)
>>> print aaa
[0, 2, 4, 6, 8]
>>> aaa
[0, 2, 4, 6, 8]
>>> help(range)
Help on built-in function range in module __builtin__:
range(...)
range([start,] stop[, step]) -> list of integers
Return a list containing an arithmetic progression of integers.
range(i, j) returns [i, i+1, i+2, ..., j-1]; start (!) defaults to 0.
When step is given, it specifies the increment (or decrement).
For example, range(4) returns [0, 1, 2, 3]. The end point is omitted!
These are exactly the valid indices for a list of 4 elements.
>>> bbb=xrange(0,10,2)
>>> print bbb
xrange(0, 10, 2)
>>> bbb
xrange(0, 10, 2)
>>> help(xrange)
Help on class xrange in module __builtin__:
class xrange(object)
| xrange([start,] 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 ........................
最後,留意一下它們的不同。
>>> range(5)
[0, 1, 2, 3, 4]
>>> range(2,5)
[2, 3, 4]
>>> range(0,15,2)
[0, 2, 4, 6, 8, 10, 12, 14]
>>> xrange(5)
xrange(5)
>>> xrange(2,5)
xrange(2, 5)
>>> xrange(0,15,2)
xrange(0, 16, 2)
>>> range(5),range(3,10)
([0, 1, 2, 3, 4], [3, 4, 5, 6, 7, 8, 9])
>>> xrange(5),xrange(2,5)
(xrange(5), xrange(2, 5))
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言