python range()函数
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降序排列,因此我们给出了负的步进值,因此输出包含降序的整数。