2014-10-16 211 views
3

是否可以在循環內增加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

回答

7

根據條件你可以使用一個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

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

我想你可以for循環做到這一點的,如果你嘗試過,但它是不可取的。 Python的for循環的整點是看項目,而不是指數

1

在你的榜樣書面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環路其他建議。

1

一個有點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 
>>>