Python 这个';对于';如果函数用于';对于';环
我正在使用python文档开始学习所有内容,它在所说的“for”循环中引入了带有“for”函数的“for”循环。我在解释方面做得很糟糕,因为我很难跟上术语的发展,所以我将向您展示:Python 这个';对于';如果函数用于';对于';环,python,for-loop,Python,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:
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之间的素数。除此之外,我对这个例子有点迷茫。文档越来越冗长,我几乎无法理解其中的大部分内容。我只是希望有人能用稍微简单一点的术语解释(2,10)范围内的n:
意味着n将采用2-10的值,一次一个,每次采用一个新值时,运行内部循环
内环
用于范围(2,n)内的x:
意味着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
当您为
循环嵌套时,内循环将在外循环的每一轮中重复。例如,它是这样开始的:
for x in range(2, 2):
然后进行到
for x in range(2, 3):
等等。对于外循环的每一步,每个内循环都会增长一步。因为中断
在内环内,所以无论内环中断
多少次,外环都将完整运行 First things Firstfor不是一个函数,而是一个结构。另外,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
及
等等
只需添加python,与其他流行语言不同,for循环不会增加变量。相反,它只是一次从您指定的值列表/数组中选择一个值(例如:range(2,10)),在本例中是一个数组[2 3 4 5 6 7 8 9]我绝对同意@Josh和@g.d.d.c的答案,但要理解循环构造的,以及它的真正功能,还需要解释更多的内容。但要想了解这一点,我只需要谈一点什么是iterable对象
Python的for
循环与另一种语言(例如Java)的工作方式不同。此处的for
循环需要可以迭代的内容。这意味着三种数据类型(通常):列表、元组和字典。这三个都有可以迭代的值,因此,for
循环可以很好地使用它们
range(a,b,s)
函数将生成[a,b]范围内的值列表,可以选择使用跳过值s。由于列表是可编辑的,我们可以将其与for
语句一起使用
当您为
语句嵌套
时,您正在执行一个嵌套循环
。中距离最远的
for语句将运行得最频繁。您可以将嵌套循环与模拟时间段进行比较-秒针是的最内层,分针是高于该值的一个级别,小时数为nd是高于该值的一个级别
现在,我们来看这个例子。在外部for
循环中,我们将从iterable列表中获得的每个值绑定到一个变量——在本例中为n
。当我们开始循环时,n==2
。我们来到内部for
循环,注意我们将变量x
绑定到列表[2,2)
,它将为空-在范围()中具有相同的起点和终点不会返回任何内容。因此,第一次通过时,我们将跳过内部循环
完成内部级别循环后,我们返回并重复外部循环。现在,n==3
。我们进入内部循环,并将x
绑定到iterable范围内的第一个值[2,3)
,这将是2
。然后我们执行内部操作,正如if
语句所预期的那样
当我们最终到达一个点时,n==9
(最大值;记住,由于范围限制,n
在本例中永远不能等于10),x
将绑定到iterable范围的第一个值[2,9)
。因此x
将从2开始,然后移动到3,依此类推
如果您想进一步了解for
循环的工作原理,那么我建议您深入研究,甚至引用。Gee,我只是键入了一些类似的内容。我不会说n
是递增的,因为for
循环不会递增值;它只会移动到集合中的下一个元素le(在本例中,它恰好是n+1)。我很抱歉。正如我所说,我在术语方面遇到了很多问题。如果您觉得python文档很难理解,您应该能够找到更容易理解的内容。@Ankit:虽然我相信您是在尽力提供帮助,但在这种情况下,您对术语的修改掩盖了Grant需要纠正的误解的一部分。您的在代码段中添加注释也不是一个好的编辑方法;在答案中发布注释会更合适。@JoshCaswell对不起,是不是
n=4
x=2,3