5.5 KiB
了解 Python xrange()方法
原文:https://www.askpython.com/python/built-in-methods/python-xrange-method
今天在本教程中,我们将讨论 Python xrange()方法。
xrange()方法仅在 Python 2.x 版本中可用,并用于遍历或迭代序列的循环中。
Python xrange()方法的基础
Python xrange()方法返回一个xrange类型的对象,它是一个不可变的序列,通常用于循环。这些对象行为很少,只支持索引、迭代和len()功能。
xrange(start, stop[, step])
这里:
- **start(可选)**是序列生成的起始点。它被包括在序列中,并且如果没有被提及,则默认设置为 0 ,
- stop 是序列生成停止之前的数字(不含),
- **step(可选)**是函数在序列生成或迭代时将采取的跳转步骤。默认情况下,它的值为 1 。
使用 Python xrange()方法
现在让我们看看实际使用 Python xrange()方法的各种方式。
1.只有停止参数
两个参数step和start是可选的,因为它们分别具有默认值 1 和 0 。因此,我们可以通过指定stop参数来使用 Python xrange()方法。
仅提及停止时,xrange()功能创建一个从 0 到**(停止-1)** 的序列,步长为 1 。看看下面的例子。
# xrange() with only stop parameter
x = xrange(4)
print "Type of returned object = ", type(x)
print "Sequence generated by xrange() 1 parameter: ", list(x)
输出:
Type of returned object = <type 'xrange'>
Sequence generated by xrange() 1 parameter: [0, 1, 2, 3]
这里,该方法生成的序列类型是前面提到的类型xrange。将xrange()输出类型转换成一个列表给我们一个包含值 0 到 3(4-1) 和步骤 1 的列表。
2.带有开始和停止参数
同样,我们也可以使用带有两个参数的 Python xrange()方法。在这种情况下,默认情况下,step的值为 1 。
# xrange() with start & stop parameters
x = xrange(2, 9)
print "Type of returned object = ", type(x)
print "Sequence generated by xrange() 2 parameters: ", list(x)
输出:
Type of returned object = <type 'xrange'>
Sequence generated by xrange() 2 parameters: [2, 3, 4, 5, 6, 7, 8]
从上面的输出中我们可以看到,Python xrange对象这次包含了从 **2(开始)**到 8(停止-1) 的值,默认步长为 1。
3.具有所有开始、停止和停止值
当提到所有的参数时,Python xrange()函数给我们一个xrange对象,其值的范围从开始到停止-1 ,就像前一个例子一样。但是这一次,从一个元素跳到另一个元素等于通过了step。
仔细看看下面的例子。这里我们考虑了步长为 5 ,开始=5 ,停止=40 。
# xrange() with 3 parameters
x = xrange(5, 40, 5) #positive step
y = xrange(9, 1, -1) #negative step
print "Sequences generated for 3 parameters by xrange"
print "x : ", list(x)
print "y : ", list(y)
输出:
Sequences generated for 3 parameters by xrange
x : [5, 10, 15, 20, 25, 30, 35]
y : [9, 8, 7, 6, 5, 4, 3, 2]
从输出可以清楚地看出,序列是用范围 5 到 39(40-1) 内的值生成的。对于最后一个元素,因为 40 超过了stop-1标记,所以不认为是**。**
在循环中使用 Python xrange()
如前所述,xrange()在 Python 2 中的for循环结构中被广泛使用。例如,在下面的代码中,我们尝试打印数字 10 的表格。
# using xrange in loops
print "Table of 10: "
for i in xrange(10, 101, 10):
print i
输出:
Table of 10:
10
20
30
40
50
60
70
80
90
100
这里,我们提到了start=10、stop=101和step=10。Stop 被认为是 101 ,因为我们希望序列包含 100(100-1) 元素。正如我们所看到的,我们得到了从 10 到 100 的所有 10 的倍数。
因此,输出是合理的。
Python xrange()与 range()
通常,xrange()只在用户希望他/她的代码只为 Python 2.x 版本设计时使用,因为它不适用于 Python 3.x 版本。对于 Python 3 ,range()方法代替了xrange()方法。
这两个函数的主要区别在于,它们都返回具有不同属性的不同对象。
xrange()方法返回一个xrange对象,它是一个不可变的序列,只支持前面提到的迭代、索引和 len 函数。
另一方面,range()方法返回一个支持主要函数的列表,如切片、 pop() 等。
# xrange() vs range()
x = xrange(1, 10)
y = range(1, 10)
print "Type(x) = ", type(x)
print "Type(y) = ", type(y)
输出:
Type(x) = <type 'xrange'>
Type(y) = <type 'list'>
此外,xrange对象在我们需要以最小的空间复杂度构建代码时更有用,因为它占用相当恒定的内存大小,与它存储的值的范围无关。
如果你想写一个可以在 Python 2 和 3 上运行或执行的程序,使用range()方法更有意义,因此推荐使用。
结论
所以在本教程中,我们了解了 Python xrange()方法的工作和使用。
如有任何问题,欢迎在下面的评论中提问。
参考
- Python range()方法,
- Python 2 中的 range 和 xrange 函数有什么区别?x?–stack overflow 问题。