python下range与xrange

760 阅读1分钟

用途

python range() 函数可创建一个整数列表,一般用在 for 循环中。

xrange() 函数用法与 range 完全相同,所不同的是生成的不是一个数组,而是一个生成器。

要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间,这两个基本上都是在循环的时候用

语法

range(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)

# python2.7下
a = range(0, 5)
print type(a)  # <type 'list'>
print(a)  # <type 'list'>
print(a[0])  # 0

b = xrange(0, 5)
print type(b)  # <type 'list'>
print(b)  # <type 'list'>
print(b[0])  # 0

注意

Python2.x与3​​.x版本区别

python3 取消了 xrange() 函数,并且和 range() 函数合并为 range()

# python 3.7下
a = range(0, 5)
print(type(a))  # <class 'range'>
print(a)  # <class 'range'>
print(a[0])  # 0

b = xrange(0, 5) # NameError: name 'xrange' is not defined
print(type(b)) 
print(b) 
print(b[0])  

当调用 xrange() 的时候,python3 环境提示 xrange 没有被定义。而 range() 函数的类型也发生了变化,在 2.7 里面的时候,是 list 类型,但是在 3.7 里面,range() 函数是range 类型。