在循环内增加for循环

问题描述:

是否可以在循环内增加for循环内的python 3?在循环内增加for循环

例如:

for i in range(0, len(foo_list)): 
    if foo_list[i] < bar 
     i += 4 

当循环计数器i得到由4如果条件成立的增加,否则它只是一个递增(或任何步进值是for循环)?

我知道一个while循环会更适用于这样的应用程序,但是很高兴知道for循环中的这个(或类似的东西)是否可能。

谢谢!

+1

这可能是一个X Y问题:林不知道为什么你不会只是处理列表更好地你迭代它之前。也看看这个:'for i,item_in_list in enumerate(foo_list):print(i,item_in_list)' – TehTris 2014-10-16 19:14:37

根据条件你可以使用一个while循环,并增加i

while i < (len(foo_list)): 
    if foo_list[i] < bar: # if condition is True increment by 4 
     i += 4 
    else: 
     i += 1 # else just increment 1 by one and check next `foo_list[i]` 

使用for循环i将随时返回在接下来的范围值:

foo_list = [1,2,3,4,5,6] 
bar = 6 
for i in range(len(foo_list)): 
    print("range i ",i) 
    if foo_list[i] < bar: 
     i += 4 
     print("if i",i) 


('range i ', 0) 
('if i', 4) 
('range i ', 1) 
('if i', 5) 
('range i ', 2) 
('if i', 6) 
('range i ', 3) 
('if i', 7) 
('range i ', 4) 
('if i', 8) 
('range i ', 5) 
+0

我知道我的示例代码没有按照它应该的方式工作。我试图说明我的意思是将循环递增1以上。感谢您的回应! – Kestrel 2014-10-16 20:09:12

+0

没问题,不客气。 – 2014-10-16 20:09:55

while i < end: 
    # do stuff 
    # maybe i +=1 
    # or maybe i += 4 

我想你可以for循环做到这一点的,如果你尝试过,但它是不可取的。 Python的for循环的整点是看项目,而不是指数

在你的榜样书面i将在循环(这似乎有点违反直觉)的每个新的迭代中进行设置,如下所示:

foo_list = [1, 2, 3] 

for i in range(len(foo_list)): 
    print('Before increment:', i) 
    i += 4 
    print('After increment', i) 

>>> 
Before increment: 0 
After increment 4 
Before increment: 1 
After increment 5 
Before increment: 2 
After increment 6 

continue是跳到下一个迭代循环的标准/安全的方式,但它会更尴尬链continues在一起,而不是只使用一个while环路其他建议。

一个有点hackish ...

>>> b = iter(range(10)) 
>>> for i in b: 
...  print(i) 
...  if i==5 : i = next(b) 
... 
0 
1 
2 
3 
4 
5 
7 
8 
9 
>>>