首页 > 技术文章 > 在线实例详解Python range()函数

freeaihub 2020-06-13 11:11 原文

本文转自https://www.freeaihub.com/article/range-function-in-python.html,实例均在在线交互学习

在本文中,我们将range()在不同的示例的帮助下学习如何使用Python的函数。内置函数range()生成给定起始整数和终止整数之间的整数,即,它返回范围对象。使用for循环,我们可以迭代该range()函数产生的数字序列。range()通过一个简单的示例,让我们了解如何使用Python 3 的功能。

print("Python range() example")
print("Get numbers from range 0 to 6")
for i in range(6):
    print(i, end=', ')

注意:由于range()函数不包含结果中的最后一个(停止)数字,因此我们获得了0到5之间的整数 。

range()函数的语法和参数

range(start, stop[, step])

它需要三个参数。这三个参数中的三个是可选的。即,start和step是可选参数。

  1. 开始参数是序列的起始号码。即下限。默认情况下,如果未指定,则以0开头。
  2. 一个停止参数是一个上限。即,生成不超过该数字的数字。结果range()中不包括该数字。
  3. 步骤是在结果每个数字之间的差值。如果未指定,则该步骤的默认值为1。

range()函数示例

现在让我们看看所有可能的情况。以下是range()函数的三个变体

# Print first 5 numbers using range function
for i in range(5):
    print(i, end=', ')

只有stop参数传递给range()。因此,默认情况下,它需要start = 0step = 1

示例二–使用两个参数(即开始和停止)

# Print integers within given start and stop number using range()
for i in range(5, 10):
    print(i, end=', ')

注意:默认情况下,它的步进值为1。

示例三 –使用所有三个参数

# using start, stop, and step arguments in range()
print("Printing All even numbers between 2 and 10 using range()")
for i in range(2, 10, 2):
    print(i, end=', ')

所有三个参数,即指定start = 2stop = 10step = 2。步长值为2,因此每个数字之间的差为2。

实践问题

在Python中使用range()函数生成从9到100可以被3整除的数字范围。

解决方案

for i in range(9, 100, 3):
    print(i)

关于range()函数参数要记住的要点

  • range()仅适用于整数。所有参数必须是整数。您不能在的start,stop和step参数中使用浮点数或任何其他类型range()
  • 这三个参数都可以是正数或负数。
  • 步长值不能为零。如果步骤为零,Python会引发ValueError 异常。

使用range()进行循环

如您所知,for循环重复执行代码或语句块固定次数。使用for循环,我们可以遍历该range()函数产生的数字序列。让我们看看如何使用for循环和range()函数打印1到10之间的奇数。使用此示例,我们可以了解在一起i使用range()和for循环时如何获得其价值。

for i in range(1, 10, 2):
    print("Current value of i is:", i)

for i in range()i中,是迭代器变量。要了解for i in range()Python的含义,首先,我们需要了解range()函数的工作原理。该range()函数使用生成器生成一个范围内的数字,即,它不会一次生成所有数字。仅在for循环迭代要求时才生成下一个值。在每次循环迭代中,Python都会生成下一个值,并将其分配给iterator变量i

程序执行

  • 正如您在输出中看到的那样,该变量i没有同时获得值1、3、5、7、9。
  • 在for循环的第一次迭代中,的值为i的值start。即,的第一个值i是范围的起始编号。在这里,范围从1开始。
  • 接下来,在for循环的每个后续迭代中,值的值i顺序递增。的值i由公式确定i = i + step。即,在第二次迭代中,i变为3,依此类推。

如您所知,在for循环的每次迭代中,都会range()生成下一个数字并将其分配给iterator变量i。即,我们按需获取数字(range()在循环移至下一个迭代时,逐个生成数字)。因此,此行为range()更快并且节省了内存。

实践问题

使用Python range()和for循环打印以下数字模式。

1个 
2 2 
3 3 3 

解析方案

for num in range(4):
    for i in range(num):
        print(num, end=" ")
    print()  # new line after each row to show pattern correctly

包含范围

在本节中,我们将学习如何生成一个包含范围。该 range(n) 是独家性质的,这就是为什么它不包括在输出中的最后一个数字。即,给定的端点永远不会成为生成结果的一部分。例如,range(0, 5) = [0, 1, 2, 3, 4]。结果包含从0到最多5的数字,但不包括5,总计数为5。range(start, stop)输出中不包括停止号,因为在Python中索引(i)始终以0开头。

如果要在输出中包括最后一个数字,即,如果要包含一个包含范围,则将stop参数值设置为stop+step

包含range()示例

# Printing inclusive range
start = 1
stop  = 5 
step  = 1
stop +=step #now stop is 6

for i in range(start, stop, step):
    print(i, end=', ')

例子2

# Printing inclusive range
start = 2
stop  = 10 
step  = 2
stop +=step #now stop is 12

for i in range(start, stop, step):
    print(i, end=', ')

range()中的步长

步骤是的可选参数range()。步骤是结果序列中每个数字之间。如果步长为2,则每个数字之间的差为2。如果未指定,则步长的默认大小为1。我们可以通过有效地使用步骤参数来执行很多操作,例如反转序列,打印负范围。

使用负步减range()

我们可以在range()函数的所有参数(即开始,停止和步进)中使用负值。

start = -2
stop = -10
step = -2
print("Negative number range")
for number in range(start, stop, step):
    print(number, end=', ')

我们先来了解上面的程序,我们设置,start = -2stop = -10step = -2

  • 在for循环的第一次迭代中,结果是 -2
  • 在for循环的第二次迭代中,结果是-2, -4因为 -2+(-2) = -4,依此类推。
  • 最后的迭代输出是 -2, -4, -6,-8

从负数到正数的范围递减

在此示例中,我们将学习如何使用step参数显示从负到正的数字范围。负数范围。

# printing range from negative to positive
for num in range(-2, 5, 1):
    print(num, end=", ")

Python范围从正数到负数

在此示例中,我们可以学习如何有效地使用step参数来显示从正到负的数字。

print (" printing range from Positive to Negative")
for num in range(2,-5,-1):
    print(num, end=", ")

将range()转换为列表

如果执行print( type( range(10) ) ),将得到``输出。Python range()函数不返回列表类型。它返回一个范围对象,即类型为range的序列对象。因此,我们得到一个不可变的整数序列对象。

我们可以将a的输出转换range()为Python列表。使用listclass将范围输出转换为list。让我们用下面的例子来理解这一点。

print("Converting python range() to list")
even_list = list( range(2, 10, 2))
print("printing list", even_list)

我们还可以使用range()函数通过其索引号访问Python列表项。

print("Use of range() to access Python list using index number")
sample_list = [10, 20, 30, 40, 50]
for i in range(len(sample_list)):
  print("List item at index ", i, "is ", sample_list[i])

注意:使用len(list),我们可以获得列表项的计数,我们使用此计数range()来循环迭代固定的次数。

反向范围

如果要在Python中按降序或逆序打印范围内的数字序列,则可以使用两种方法。

第一种是使用负值或向下步进值。即,将a的step参数设置range()-1。例如,如果要显示一个像[5,4,3,2,1,0]这样的数字序列,即我们想要带range()功能的for循环的反向迭代或反向迭代。

让我们看看如何使用 Python中的索引向后循环以显示从5到0的数字范围。

输出

以相反的顺序显示数字范围
5、4、3、2、1、0

使用reversed函数在Python中反转范围

另外,使用reversed()函数,我们可以反转任何序列。如果我们将reversed()函数与一起使用range(),则将返回range_iterator,以相反的顺序访问给定范围的数字。下面的示例将使您知道如何在Python中进行反向for循环。

print("Printing reverse range using reversed()")
for i in reversed(range(0, 5)):
    print(i)

检查输出类型是否range()reversed()

print("Checking the type")
print(type(range(0, 5)))
print(type(reversed(range(0,5))))

另外,如果您需要列表,则需要将reversed()函数的输出转换为list。因此,您可以获得范围的反向列表。

使用反向打印列表range()

print("Printing list in reverse order with range")
reverseed_list = list(reversed(range(0, 5)))
print(reverseed_list)

print("Second example to reverse list with range")
reverse_list2 = list(range(5, -1, -1))
print(reverse_list2)

print("Third Example to reverse list with range")
reverse_list3 = list(range(2, 20, 2)[::-1])
print(reverse_list3)

本文翻译自:https://pynative.com/python-range-function/

推荐阅读