繁体   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