2014-10-04 85 views
-3

我的問題是我們如何跳出一個內循環,但是當再次進入循環時仍然迭代到下一個值。Python中的內循環打破

這是可能嗎?

考慮之下,極度簡化,片段:

item=['I','want','this','output'] 
i=[1,2,3,4] 

for x in i: 
    for y in item: 
     print y 
     break 

輸出,當然是4倍的話「我」

我真正想要的輸出爲是這樣的:「我希望這個輸出」

謝謝

+0

你試過插入一些調試打印語句,以更好地unterstand你的算法? – tobias47n9e 2014-10-04 21:25:58

+0

您不能在不影響內部環境的情況下中斷外部環路。 – 2014-10-04 21:31:16

+0

也許你需要改寫/重新思考你的問題。你是否試圖將兩個列表中的每個相應項目配對? – 2014-10-04 21:32:28

回答

1

爲了,因爲你問,「還是迭代時再次進入該循環的下一個值」,您可以在內環的列表轉換爲迭代器。每次你「看見」項目被消耗,你會不會再次訪問它,可以讓你在同一地點,下次可以繼續:

item_iter = iter(item) 
for x in i: 
    for y in item_iter: 
     print y 
     break 

I 
want 
this 
output 

這是假設你的確是一個需要的情況是一種解決方案。更簡單的將是:

for x, y in zip(i, item): 
    print y 
+0

Exaclty我需要!謝謝 – 2014-10-04 21:31:28

+1

不知道爲什麼這是downvoted;使用內部循環的迭代器正是我所用的。 – 2014-10-04 21:31:42

0

爲什麼不

item = ["give", "me", "free", "things"] 
for x in item 
    print x 

你也可以這樣做:

item = ["give", "me", "free", "things"] 
for x in list(enumerate(item)) 
    print item[x] 
+1

對於使用的字符串+1 :) – 2014-10-04 21:25:38

+0

使用'枚舉'不在範圍 – 2014-10-04 21:54:14