python range() 函数可创建一个整数列表,一般用在 for 循环中。
函数语法
range(start, stop[, step])
(start, stop[, step])
参数说明:
- start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
实例
>>>range(10) # 从 0 开始到 10[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> range(1, 11) # 从 1 开始到 11[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]>>> range(0, 30, 5) # 步长为 5[0, 5, 10, 15, 20, 25]>>> range(0, 10, 3) # 步长为 3[0, 3, 6, 9]>>> range(0, -10, -1) # 负数[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]>>> range(0)[]>>> range(1, 0)[]
以下是 range 在 for 中的使用,循环出runoob 的每个字母:
>>>x = 'runoob'>>> for i in range(len(x)) :... print(x[i])... runoob
range 前面小节已经说明了,range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列。
比如:
xrange 用法与 range 完全相同,所不同的是生成的不是一个list对象,而是一个生成器。
11 | >>> list ( xrange ( 0 , 6 , 2 )) |
由上面的示例可以知道:要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间。
xrange 和 range 这两个基本上都是在循环的时候用。
4 | for i in xrange ( 0 , 100 ): |
这两个输出的结果都是一样的,实际上有很多不同,range会直接生成一个list对象:
输出结果:
2 | [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 , 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , 62 , 63 , 64 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , 91 , 92 , 93 , 94 , 95 , 96 , 97 , 98 , 99 ] |
而xrange则不会直接生成一个list,而是每次调用返回其中的一个值:
输出结果:
view source
print?