R 和 Python 中的无限循环

infinite for loop in R and Python

嗨,我是 R 的新手,Python,只是想了解为什么下面的代码没有给出无限值:

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

结果:

[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10

在Python中:

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

结果:

0
1
2
3
4
5
6
7
8
9

由于我们将 i 每次迭代后的值设置为 5,它应该会进入无限循环。 请帮助我理解。

提前致谢。 阿希什

合法的问题和不公平的反对票!

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很难混淆,但是这样的代码肯定会混淆 人类。所以避免它。