R和Python中的无限for循环

2024-05-20 00:05:48 发布

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

嗨,我对R和Python还不熟悉,只是想理解为什么下面的代码没有给出无穷大的值:

in R :
for (i in 1:10) {
  print(i)
  i=5
}

结果:

^{pr2}$

在Python中:

for i in range(10):
    print(i)
    i = 5 

结果:

0
1
2
3
4
5
6
7
8
9

当我们在每次迭代i到5之后设置值时,它应该进入无限循环。 请帮助我理解。在

提前谢谢。 灰烬


Tags: 代码inforrangeprint灰烬pr2
1条回答
网友
1楼 · 发布于 2024-05-20 00:05:48

合法的问题和不公平的否决票!在

R中,i在for循环中的行为就好像它是在每次迭代时从另一个环境中存储、递增和重新加载的(可能是这样),并不是所有语言都是这样,但在R中是这样的。在

来自R Inferno

8.1.64迭代是神圣不可侵犯的

在下面的循环中,“i”有两个用法。在

> for(i in 1:3) f
+ cat("i is", i, "nn")
+ i <- rpois(1, lambda=100)
+ cat("end iteration", i, "nn")
+ g

i is 1
end iteration 93
i is 2
end iteration 91
i is 3
end iteration 101

在循环体中创建的i在迭代期间使用,但是 不会更改开始下一个迭代的i。这不同于 其他语言(包括S+)。在

这证明了R很难混淆,但这样的代码肯定会混淆 人类。所以要避免。在

相关问题 更多 >