Python中range()和xrange()函数的区别?


Python中的range()方法用于返回一个序列对象。它用于Python 3.x。xrange()用于生成数字序列,用于Python 2.x。因此,Python 3.x中没有xrange()。

让我们首先分别了解range()和xrange()。

Python中的range()方法

range()方法返回一个数字序列,并具有3个参数:start、stop和step。语法如下:

range(start, stop, step)

这里:

  • start − 指定起始位置的整数。

  • stop − 指定结束位置的整数。(不包含stop)

  • step − 指定增量,即跳过的步数。

使用range()创建数字序列

示例

我们将在这里使用range()方法创建一个序列:

# Using the range() to get sequence of numbers # Defines start and stop parameters a = range(2, 8) for n in a: print(n)

输出

2
3
4
5
6
7

使用range()创建数字序列并设置步长

示例

我们将在这里使用range()方法创建一个序列,并将设置跳过步长:

# Using the range() to get sequence of numbers # Defined start, stop and step parameters a = range(2, 10, 3) for n in a: print(n)

输出

2
5
8

使用range()创建序列并获取对象的大小

示例

getsizeof()方法用于获取给定对象以字节为单位的大小:

import sys # Using the range() to get sequence of numbers # Defined start and stop parameters a = range(2, 5) for n in a: print(n) # Get the size print("Size = ",sys.getsizeof(a))

输出

2
3
4
Size = 48

Python中的xrange()方法

xrange()方法返回生成器对象,与Python中的range()方法有点类似。

注意 − xrange() 仅在 Python 2.x 中运行。在 Python 3.x 中会报错。

语法

语法如下:

range(start, stop, step)

这里:

  • start − 指定起始位置的整数。

  • stop − 指定结束位置的整数。(不包含stop)

  • step − 指定增量,即跳过的步数。

让我们看一些例子。

注意 − 我们在 Python 2.x 中运行以下程序。

使用xrange()创建数字序列

示例

我们将在这里使用xrange()方法创建一个序列:

# Python 2.x # Using the range() to get sequence of numbers # Defines start and stop parameters a = range(4, 8) for n in a: print(n)

输出

4
5
6
7

使用xrange()创建数字序列并设置步长

示例

我们将在这里使用xrange()方法创建一个序列,并将设置步长:

# Python 2.x # Using the xrange() to get sequence of numbers # Defined start, stop and step parameters a = xrange(4, 12, 2) for n in a: print(n)

输出

4
6
8
10

使用xrange()创建序列并获取对象的大小

示例

getsizeof()方法用于获取给定对象以字节为单位的大小:

#Python 2.x import sys # Using the xrange() to get sequence of numbers # Defined start and stop parameters a = xrange(2, 5) for n in a: print(n) # Get the size print("Size = ",sys.getsizeof(a))

输出

2
3
4
('Size = ', 40)

上面显示xrange()仅占用40字节。在上一节中,我们看到对于相同数量的元素,range()方法占用了48字节。因此,xrange()占用更少的内存。

range() vs xrange()

现在,让我们看看区别:

依据 range() xrange()
含义 range()方法返回一个数字序列,即整数列表。 xrange()方法返回一个生成器对象。
Python版本 在Python 3.x中有效 在Python 2.x中有效
消耗更多内存(如上所示) 消耗更少内存(如上所示)
操作 它返回一个数字列表,因此我们可以执行算术运算。 在xrange()方法上无法进行算术运算。
执行速度 比xrange()慢 比range()快

更新于:2022年9月15日

4K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告