使用“for”in`range(x)`loop

2024-09-28 01:29:10 发布

您现在位置:Python中文网/ 问答频道 /正文


两个代码块不应该打印出相似的结果吗?为什么每次到达inner for语句时内部循环内部的范围函数都会重新求值,而outerloop中的范围函数只计算一次?在

x = 4
for j in range(x)
   for i in range(x)
       print i
       x = 2

结果
0
1
2
<3/> 0
1
<0 br/> 1
0
1

我知道打印的前4个整数(0-3)是代码的结果 对于范围(x)中的j:代码,但为什么还要打印以下内容?
0
1
0
1
0
1
代码

^{pr2}$

打印
0
1
2
3

附加信息 python2.7在空闲状态下


Tags: 函数代码inbr信息for状态range
3条回答

范围(x)只计算一次,即当循环开始时,这就是为什么在循环内修改x没有效果。在

但是,在第一个代码时钟中,您将内部的x更改为2,因此下次执行内部循环时,range只给出(0,1)。在

编辑:您的第一个代码块相当于

x = 5
for i in range(x)
    print i
    x = 2

函数range(x)生成[0,1,2,3,4]的列表。在for循环中,您迭代该列表。在

您的代码相当于:

for j in [0,1,2,3]:
    for i in [0,1,2,3]:
        print i
    for i in [0,1]:
        print i
    for i in [0,1]:
        print i
    for i in [0,1]:
        print i

我只能通过遍历循环的迭代来解释,因此:

x = 4
for j in range(x)
   for i in range(x)
       print i
       x = 2

第一次通过。在

^{pr2}$

印刷品

0
1
2
3

现在x被设置为2,但是外部循环范围已经被执行,所以它不会被重新计算。在

代码现在变成:

for j in [0, 1, 2, 3]:
    for i in [0, 1]:
        print i
        x = 2

印刷品

0
1

这又持续了两次。在

相关问题 更多 >

    热门问题