[英]Question about double for loops and ranges
由于我是 python 的初学者,我很困惑为什么 j 在执行下面的代码时会产生这样的结果:0 1 0 1 2。 根据我的理解,我认为,i 代表 0-3,所以 j 不也代表数字 0-3。
for i in range(4):
for j in range(i):
print(j)
您的第一个 for 循环从 0 变为 3。
所以 i 是 0,然后是 1,然后是 2,然后是 3。
J 将是 0,然后是 1,然后是 2,然后是 3。
所以在范围 (0) 中打印 j 什么都不做,因为 range(0) 什么都不是。
然后你在 range(1) 中打印 j,它打印 0
然后你打印 j in range(2) 打印 0, 1
最后,您在范围 (3) 中打印 j,该范围打印 0, 1, 2
外循环有 4 次迭代,因为i
设置为 0、1、2 和 3。
第一个什么都不做,因为range(0)
是一个空序列。
第二个输出 0,这是range(1)
中的唯一值。
第三个输出 0 和 1,即range(2)
中的值。
最后打印 0、1 和 2,即range(3)
中的值。
关键是对range
的内部调用使用i
的当前值来生成不包括i
本身的值范围。
当您在range(x)
上使用 for 循环时,它将运行其代码x
次,从 0 开始并递增。
for i in range(4)
将运行 4 次,每次的i
值分别为 0、1、2、3。
当i
的值为 0 时, for j in range(0)
将运行 0 次,因此不会打印任何内容。
当i
的值为 1 时, for j in range(1)
将运行一次,并打印 0。
当i
的值为 2 时, for j in range(2)
将运行两次,并打印 0,然后打印 1。
最后,当i
的值为 3 时, for j in range(3)
将运行 3 次,并打印 0、1、2。
这给你一个 output :
0 1 0 1 2
调试示例:
在此示例中 for 循环for i in range(4)
将在 i 小于停止值时运行,在这种情况下为 4(循环的最后一次运行将在 i 为 3 时)。 function 范围内变量的默认起始值为 0。如果将两个 arguments 传递给范围 function,第一个将是起始值,第二个将是停止值再跑)。 每次迭代,起始值都会增加 1。您可以通过将第三个参数传递给范围 function 来更改该数字。 如果 start 和 stop 值相同,例如 0 和 0,则 for 循环不会运行。
这与嵌套的 for 循环相同,就像在您的示例中一样。 希望我让你的循环更容易一些。
注意:我的英语不太好。
同样的方式i
表示 0-3 (比stop
arg 4 小 1 ); j
将取值直到stop
参数 ( i
) -1 。
在i
== 3 的迭代中, j
只会 go 最多 2(即比i
小一)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.