geekdoc-python-zh/docs/askpython/python-xrange-method.md

5.5 KiB
Raw Permalink Blame History

了解 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.只有停止参数

两个参数stepstart是可选的,因为它们分别具有默认值 10 。因此,我们可以通过指定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()输出类型转换成一个列表给我们一个包含值 03(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]

从输出可以清楚地看出,序列是用范围 539(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=10stop=101step=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 23 上运行或执行的程序,使用range()方法更有意义,因此推荐使用。

结论

所以在本教程中,我们了解了 Python xrange()方法的工作和使用。

如有任何问题,欢迎在下面的评论中提问。

参考