在for循环中与迭代混淆

时间:2015-12-01 23:22:05

标签: python iteration

我只是一个初学者程序员,只是想问一下在for循环中弄乱你的迭代器是否可接受/好的代码。 示例(Python):

 For i in range(n)
 if _statement_:
       i -= 1
       ...

我没有遇到任何问题,我的代码似乎工作得很好但是我不确定这是否算作"好"代码。

3 个答案:

答案 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)

会产生无限循环

相关问题