繁体   English   中英

关于双循环和范围的问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM