按照惯例先吟诗一首:

《行宫》–元稹

寥落古行宫,宫花寂寞红。
白头宫女在,闲坐说玄宗。

range(start=None, stop=None, step=None)函数说明:

1
2
3
4
5
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.

大致意思就是:range函数返回的是包含一个等差数列的整数列表,根据参数start与stop指定的范围以及step设定的差值,生成一个列表。 如果不指定step默认差值就是1,如果指定step,它指定递增(或递减),差值就是step.如果不明白举个栗子,如果还不明白就举2个栗子。

例子1:

1
2
3
a=range(0,10,2)
print a
print type(a)

结果如下:

1
2
[0, 2, 4, 6, 8]
<type 'list'>

例子2:

1
2
3
a=range(0,-10,-2)
print a
print type(a)

结果如下:

1
2
[0, -2, -4, -6, -8]
<type 'list'>

xrange 函数说明:和range 的用法完全相同,但是返回的是一个生成器。

例子1:

1
2
3
a=xrange(0,10,2)
print a
print type(a)

结果如下:

1
2
[xrange(0, 10, 2)
<type 'xrange'>

例子2:

1
2
3
a=xrange(0,-10,-2)
print a
print type(a)

结果如下:

1
2
xrange(0, -10, -2)
<type 'xrange'>

range和xrange区别:

两个都是在循环迭代的时候使用,range返回的是个list,xrange返回的是xrange对象,生成很小的数字序列时候性能没什么区别,但是要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间。如果你不是为了要返回一个list,在循环中尽量使用xrange。