我只是一个初学者程序员,只是想问一下在for循环中弄乱你的迭代器是否可接受/好的代码。 示例(Python):
For i in range(n)
if _statement_:
i -= 1
...
我没有遇到任何问题,我的代码似乎工作得很好但是我不确定这是否算作"好"代码。
答案 0 :(得分:0)
你不要乱用迭代器 - 你只需创建一个同名的变量并用它做一些事情
>>> for a in range(5):
... print id(a)
... print a
... a -= 1
... print id(a)
... print
...
24822128
0
24822152
24822104
1
24822128
24822080
2
24822104
24822056
3
24822080
24822032
4
24822056
正如您所看到的那些是不同的变量,循环显然会迭代5次。
这是一个好习惯吗? 否即可。这是一种对立的东西,因为人们应该期待在一个循环中," a"每行代表相同的含义。您应该以不同的方式命名变量,例如
>>> for a in range(10):
... print a
... b = a - 1
如果你想真正影响重复循环次数,你应该使用while
循环。
答案 1 :(得分:0)
您提供的代码是可以接受的,但效率不高。无论您是否修改i
,您的循环都将运行相同的次数。
>>> for i in range(5):
>>> i = i - 1
>>> print(i)
-1
0
1
2
3
当您修改变量i
时,它会创建一个新变量,与控制循环的变量分开。
答案 2 :(得分:-1)
我认为修改迭代器的当前值很好,只是作为一个新变量。但我不建议像
那样修改迭代器本身my_list = [1, 2, 3, 4]
for i in my_list:
my_list.append(i+4)
会产生无限循环