簡體   English   中英

如果在'for'循環中使用'for'函數,它是如何工作的?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM