迭代和函数 - Python

Iterating and for function - Python

我似乎无法理解这个问题。我会很感激一些帮助。在我看来,for 函数在每次新迭代时都以 n+1 的速率迭代,尽管我不明白为什么。

这是我的 Python 代码:

for n in range(2, 10):
    print "This is %d" % n
    for x in range(2, n):
        print "%d" % n

这里是 Powershell 中的输出:

This is 2
This is 3
3
This is 4
4
4
This is 5
5
5
5
This is 6
6
6
6
6
This is 7
7
7
7
7
7
This is 8
8
8
8
8
8
8
This is 9
9
9
9
9
9
9
9

为什么会这样?

范围的结束值不包括,因此从22的范围不包括任何值。然后创建一个从 23 的范围,其中仅包括值 2,等等

因此,您正在生成将循环 n - 2 次的循环,其中 n 从 2 循环到 9(含),并且每个内部循环从 2 循环到 n - 1,包括在内。

对于每个嵌套循环,您将再次打印 n,这在内部循环中不会改变。尝试打印 x,或者更好的是,一起打印 :

for n in range(2, 10):
    print "This is %d" % n
    for x in range(2, n):
        print "n=%d, x=%d" % (n, x)

对于每个 n 这将打印 x 从 2 到 n - 1 的值,包括:

>>> for n in range(2, 10):
...     print "This is %d" % n
...     for x in range(2, n):
...         print "n=%d, x=%d" % (n, x)
... 
This is 2
This is 3
n=3, x=2
This is 4
n=4, x=2
n=4, x=3
This is 5
n=5, x=2
n=5, x=3
n=5, x=4
This is 6
n=6, x=2
n=6, x=3
n=6, x=4
n=6, x=5
This is 7
n=7, x=2
n=7, x=3
n=7, x=4
n=7, x=5
n=7, x=6
This is 8
n=8, x=2
n=8, x=3
n=8, x=4
n=8, x=5
n=8, x=6
n=8, x=7
This is 9
n=9, x=2
n=9, x=3
n=9, x=4
n=9, x=5
n=9, x=6
n=9, x=7
n=9, x=8
for n in range(2, 10):
    for x in range(2, n):
        ...

您有嵌套 循环。内循环的上限设置为 outer 循环的 current 值。

外层循环将从 2(含)迭代到 10(不含):

  1. 在第一次迭代中,n2。因此,内部循环将从 2(含)迭代到 2(不含)。由于上限实际上等于下限,因此内循环不会迭代。
  2. 在外循环的第二次迭代中,n3。因此,内部循环将从 2(含)迭代到 3(不含)。所以有 one inner 循环与 x = 2
  3. 的迭代
  4. 在外循环的第三次迭代中,n4。因此,内部循环将从 2(含)迭代到 4(不含)。内部循环有两次迭代(x = 2x = 3)。

等等...

我想我现在明白了。在第一个 for 循环的每次迭代中,第二个 foor 循环将为 2 和 n 之间的每个 'x' 值迭代一次。

因此,如果 n 为 7,第一个 for 循环将为数字 7 迭代一次,第二个 for 循环将为 2 和 7 之间的每个值迭代一次(即 5 次)。