python range()函数

时间:2020-02-23 14:43:12  来源:igfitidea点击:

Python的range函数是生成数字列表的内置函数。
此列表主要用于使用for循环进行迭代。

Python range()与xrange()函数

在Python 2中,为了创建可迭代对象,使用了xrange()函数。
在Python 3中,range()的实现与xrange()相似。
因此,不再需要单独的xrange()
在Python 3中使用xrange()会引发NameError

~]# python3 --version
Python 3.6.8

我将尝试在Python 3中使用xrange()

#!/usr/bin/env python3
print(range(10))
print(xrange(10))

该脚本的输出:

~]# python3 python-range-1.py
range(0, 10)
Traceback (most recent call last):
  File "python-range-1.py", line 4, in 
    print(xrange(10))
NameError: name 'xrange' is not defined

与预期的一样,我们为xrange函数获取了NameError。

Python range()函数语法

范围函数的基本语法如下:

range([start], stop, [step])

以下是每个参数的功能细分:

  • start:这是序列的起始编号。

  • stop:这意味着生成最多但不包括该数字的数字。

  • step:这是序列中每个数字之间的差。

调用range函数时,"唯一必需的参数"是" stop"参数,并且对该函数的默认调用只能有一个参数。

说明:

提供给范围函数的值必须是整数。
不允许使用浮点数和任何其他类型。

Python range(stop)

现在,让我们看一下对range函数的调用及其相应的输出。
首先,仅在包含stop参数的情况下执行呼叫:

range(5)

range(5)类基本上告诉函数生成从0到5的数字,但不包括5.

让我们检查一下range(5)的语法:

#!/usr/bin/env python3
print(range(5))

该脚本的输出:

~]# python3 range-example-2.py
range(0, 5)

由于我们没有提供任何起始值,因此默认情况下,range()会将0视为起始值。
因此我们的语法在内部更新为range(0,5)

要获取range(5)的内容,我们可以将数据类型更改为list,也可以使用for循环遍历range()的值。

示例1:使用列表打印范围值

我们将更新脚本以将range(5)作为列表类型打印:

#!/usr/bin/env python3
print(list(range(5)))

该脚本的输出:

~]# python3 range-example-2.py
[0, 1, 2, 3, 4]

示例2:使用for循环访问range()函数

由于range()是可迭代的,因此我们也可以使用for循环来迭代range()函数的各个值:

#!/usr/bin/env python3
for val in range(5):
    print(val)

该脚本的输出:

~]# python3 range-example-2.py
0
1
2
3
4

Python range(start,stop)

在前面的示例中,由于我们未提供任何"开始"值,因此将0视为"开始"。
现在,我使用共享一些示例,其中我们为range()定义了自己的start和stop值。

示例1:使用for循环遍历range()

在此示例中,我们将使用for循环迭代range(10,15)中的数字

#!/usr/bin/env python3
for val in range(10, 15):
    print(val)

该脚本的输出:

~]# python3 range-example-3.py
10
11
12
13
14

如我们所见,由于我们已经指定了起点,所以这次的计数从" 10"开始而不是从" 0"开始。

示例2:使用range()列出数字

正如我们之前所做的,如果要创建一个数字列表,则可以使用list()函数将range()的结果直接转换为列表。
当将list()软件包在对range()函数的调用周围时,输出将是数字列表。

#!/usr/bin/env python3
print(list(range(10, 15)))

该脚本的输出:

~]# python3 range-example-3.py
[10, 11, 12, 13, 14]

Python range(start,stop,step)

我们也可以使用range()函数告诉Python跳过给定范围内的数字。
如果我们将第三个参数传递给range(),Python在生成数字时会将该值用作step大小。

示例1:生成偶数作为列表

在这个例子中,我们将使用" step"来仅获得提供范围之外的偶数。

#!/usr/bin/env python3
even_numbers = list(range(2, 11, 2))
print(even_numbers)

该脚本的输出

~]# python3 range-example-3.py
[2, 4, 6, 8, 10]

由于我们知道任何可被2整除的整数都是偶数,因此我们添加了2的步长值,该步长将仅列出所提供范围内的偶数。

示例2:使用带有range()的for循环生成奇数

在此示例中,我们将使用for循环遍历一个范围并仅打印奇数

#!/usr/bin/env python3
for num in range(1, 11, 2):
    print(num, end=' ')

该脚本的输出:

1 3 5 7 9

其中我使用end =''在同一行中打印输出,并从末尾删除新行字符。
现在,由于我的范围是从1到11,所以我将步长值保持为2. 但是如果条件不同,例如" 2-10",则可能必须添加其他值。

Python范围反向带有负步长值

" step"值可以是正值或者负值,具体取决于要求。
现在,在前面的示例中,我们使用正值增加范围迭代,在本示例中,我们将使用负值减小范围迭代:

#!/usr/bin/env python3
for num in range(31, 11, -2):
    print(num, end=' ')
print()

该脚本的输出:

~]# python3 range-example-4.py
31 29 27 25 23 21 19 17 15 13

因此,这次我们的范围是从31到11降序排列,因此我们给出了负的步进值,因此输出包含降序的整数。