[英]How does the 'for' function work if it is used in a 'for' loop?
我正在使用python文檔開始學習所有內容,並在所述'for'循環中引入了'for'循環和'for'函數。 我正在做一個很糟糕的解釋,因為我很難跟上術語,所以我只會告訴你:
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print n, 'equals', x, '*', n/x
break
else:
print n, 'is a prime number'
我理解if / else循環和break語句。 我看到它以某種方式生成2到10之間的素數。除此之外,我有點迷失這個例子。 文檔變得難以忍受,我現在幾乎無法理解它。 我只是希望有人可以用稍微簡單的術語解釋一下
for n in range(2, 10):
表示n將取2-10的值,一次取一個值,每次取值為新值時,運行內循環。
內環,
for x in range(2, n):
表示x將采用2 - n的值,一次一個,並執行其內部,if / else。
所以外循環從2開始,所以n = 2.內循環從2-n迭代,n = 2,所以2-2,所以一次。
然后控制傳遞回外部循環,n遞增,內部循環現在從2-n執行,n為3.因此x取值2,然后是3,因為n是3,所以傳回外循環,等等。
這是一些流程:
:start outer, n = 2
:goto inner, x will range from 2 - 2, so x = 2, x hits max for the inner loop
:goto outer, n = 3
:goto inner, x will range from 2 - 3, so x = 2, iterate once, x = 3, x hits max for inner loop
:goto outer, n = 4
:repeat
首先第一件事情的不是功能,而是一個結構。 另外,if / else不是循環而是分支構造
考慮標記的代碼
for n in range(2, 10): # this is the outer loop
for x in range(2, n): # this is the inner loop
#(this is where the code is checking whether n is prime)
if n % x == 0: #checking is x divides n
print n, 'equals', x, '*', n/x
break
else:
print n, 'is a prime number'
接下來, 外部 for循環從2到10迭代。循環的每次迭代都有另一個內部 for循環。 這個內部循環從2迭代到該數字,並檢查可分性以檢查變量n(外循環)是否為素數。
例如:
For the first iteration
n=2
x=nothing
,然后
n=3
x=2
和
n=4
x=2,3
等等。
只是為了添加python,與其他流行語言不同,for循環不會增加變量。 相反,它只是從您指定的列表/數組中一次選擇一個值(例如:范圍(2,10)在這種情況下是一個數組[2 3 4 5 6 7 8 9]
我在這里肯定會同意@Josh和@gddc的答案,但還需要解釋一下才能理解for
循環結構,以及它的功能究竟是什么。 但為了實現這一點,我不得不談論可迭代對象是什么。
Python的for
循環與其他語言(例如Java)的工作方式不同。 這里的for
循環需要他們可以迭代的東西。 這意味着三種數據類型(通常):列表,元組和字典。 所有這三個都具有可以迭代的值,因此, for
循環可以很好地與它們一起工作。
range(a, b, s)
函數將生成范圍[a,b)中的值列表,可選地具有跳躍值s。 由於列表是可迭代的,我們可以將它與for
語句一起使用。
當你窩 for
語句,則執行的是嵌套循環 。 聲明最遠for
將是最常見的。 您可以將嵌套循環與模擬時間片進行比較 - 秒針是最里面for
,分針是高於該值的水平,而時針是高於該水平的水平。
現在,進入這個例子。 在外部for
循環中,我們將從iterable列表中獲得的每個值綁定到一個變量 - 在本例中為n
。 當我們開始循環時, n == 2
。 我們來到內部for
循環,注意我們將變量x
綁定到列表[2, 2)
,這將是空的 - 在range()
中具有相同的起點和終點不返回任何內容。 所以第一次,我們將跳過內循環。
一旦我們完成內部循環,我們回來重復外循環。 所以現在, n == 3
。 我們來到內部循環,並將x
綁定到可迭代范圍[2, 3)
的第一個值,即2
。 然后我們按照if
語句的預期執行內部操作。
當我們最終達到n == 9
(最大值;記住,由於范圍限制, n
在本例中n
不能等於10)時, x
將被綁定到可迭代范圍的第一個值[2, 9)
2,9 [2, 9)
。 所以x
將從2開始,然后移到3,依此類推。
如果您想了解更多關於如何for
循環工作,那么我建議尋找到列表理解 ,甚至引用潛入Python的名單上的部分 。
嵌套for
循環時,內循環會在外循環的每一輪中重復出現。 所以,對於你的例子,它是這樣開始的:
for x in range(2, 2):
然后繼續前進
for x in range(2, 3):
等等。 對於外環的每個步驟,每個內環增長一步。 因為break
在內部循環內,所以無論內部循環break
多少次,外部循環都將完整地運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.