python3 for循环的使用误区
作为一个先接触 C语言,C++,java等高级语言,再使用python的小白(菜鸡)来说会遇到一些奇奇怪怪的bug ,今天在刷LeetCode的时候,就遇到了一个关于python中for 循环的误区,如有错漏,希望我有幸能得到大佬们的指正,也欢迎大家能与我多多交流讨论。
如果你执行下列代码:
j = 0
for i in range(5):
i += 1
j += i
print( j)
按照 C 的 想法来来编写代码的话,就会写出以下代码:
for(int i = 0; i < 5; i++){
i ++;
j += i
}
print(j)
按照我的想法,这两个输出一定会一致,实际上这两个输出完全不同。
python:
15
C:
9
其实查过python的文档就知道,在python for i in x 循环中 改变i的值不会影响到下一次循环因为range函数产生了一个迭代器(python2 为一个列表)。
产生这个bug的原因 纯粹是我太菜了,把 python的循环想成和c一样了,从而产生了这个bug,谨以此来记录这次错误,以防下次再犯,也希望能提醒和我出现同样错误的语言小(da)白(佬)们(未来的大佬),并希望大家都能早点变成自己心中的大佬的模样,共勉!!!