2015-12-01 19 views
0

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

For i in range(n) 
if _statement_: 
     i -= 1 
     ... 
我不是有一个问题或任何

,我的代码似乎工作得很好,像这样的,但我不知道这是否算作“好”的代码。

+0

它不会做任何事情,你的实际迭代,这只会使'i'参考其他一些变量。也就是说,它仍然会运行n次,无论你将“i”设置为等于 –

+0

除了你有语法问题。 'range(n)'后面缺少':',对'if'块缺少意图 – Alexander

回答

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”在每一行中都是相同的。如果你想实际影响重复循环的数量不应该使用while循环相反,你应该有所不同命名您的变量,像

>>> for a in range(10): 
... print a 
... b = a - 1 

0

您提供的代码是可以接受的,但不是特别有效。您的循环将运行相同的次数,无论您是否修改i

>>> for i in range(5): 
>>>  i = i - 1 
>>>  print(i) 
-1 
0 
1 
2 
3 

当你修改变量i,它会创建一个新的,从一个控制回路分开。

-1

我认为修改你的迭代器的当前值是好的,并且只是一个新的变量。但我不会建议修改迭代器本身就像

my_list = [1, 2, 3, 4] 
for i in my_list: 
    my_list.append(i+4) 

会产生一个无限循环