本文轉自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是可選參數。
- 甲 開始參數是序列的起始號碼。即下限。默認情況下,如果未指定,則以0開頭。
- 一個停止參數是一個上限。即,生成不超過該數字的數字。結果
range()
中不包括該數字。 - 該步驟是在結果每個數字之間的差值。如果未指定,則該步驟的默認值為1。
range()函數示例
現在讓我們看看所有可能的情況。以下是range()函數的三個變體。
# Print first 5 numbers using range function
for i in range(5):
print(i, end=', ')
只有stop參數傳遞給range()
。因此,默認情況下,它需要start = 0
和step = 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 = 2
, stop = 10
, step = 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 = -2
,stop = -10
,step = -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列表。使用list
class將范圍輸出轉換為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)