迭代和函数 - 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
为什么会这样?
范围的结束值不包括,因此从2
到2
的范围不包括任何值。然后创建一个从 2
到 3
的范围,其中仅包括值 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(不含):
- 在第一次迭代中,
n
是 2
。因此,内部循环将从 2(含)迭代到 2(不含)。由于上限实际上等于下限,因此内循环不会迭代。
- 在外循环的第二次迭代中,
n
是 3
。因此,内部循环将从 2(含)迭代到 3(不含)。所以有 one inner 循环与 x = 2
的迭代
- 在外循环的第三次迭代中,
n
为 4
。因此,内部循环将从 2(含)迭代到 4(不含)。内部循环有两次迭代(x = 2
和 x = 3
)。
等等...
我想我现在明白了。在第一个 for 循环的每次迭代中,第二个 foor 循环将为 2 和 n 之间的每个 'x' 值迭代一次。
因此,如果 n 为 7,第一个 for 循环将为数字 7 迭代一次,第二个 for 循环将为 2 和 7 之间的每个值迭代一次(即 5 次)。
我似乎无法理解这个问题。我会很感激一些帮助。在我看来,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
为什么会这样?
范围的结束值不包括,因此从2
到2
的范围不包括任何值。然后创建一个从 2
到 3
的范围,其中仅包括值 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(不含):
- 在第一次迭代中,
n
是2
。因此,内部循环将从 2(含)迭代到 2(不含)。由于上限实际上等于下限,因此内循环不会迭代。 - 在外循环的第二次迭代中,
n
是3
。因此,内部循环将从 2(含)迭代到 3(不含)。所以有 one inner 循环与x = 2
的迭代
- 在外循环的第三次迭代中,
n
为4
。因此,内部循环将从 2(含)迭代到 4(不含)。内部循环有两次迭代(x = 2
和x = 3
)。
等等...
我想我现在明白了。在第一个 for 循环的每次迭代中,第二个 foor 循环将为 2 和 n 之间的每个 'x' 值迭代一次。
因此,如果 n 为 7,第一个 for 循环将为数字 7 迭代一次,第二个 for 循环将为 2 和 7 之间的每个值迭代一次(即 5 次)。