は不自然な例です:forループの本体でイテレータ変数を再定義することはできますか?ここ
from itertools import cycle
def foobar():
A = [1,2,3,4,5]
B = [6,7,8,9,10]
it = cycle(A)
tmp=0
for item in it:
print item, tmp
if tmp>10:
it=cycle(B) #is this possible?
if tmp>30:
return tmp
tmp+=item
は出力:
1 0
2 1
3 3
4 6
5 10
1 15
2 16
3 18
4 21
5 25
1 30
2 31
私はそれが私はを再定義し、その時点で、条件が満たされるまでループのために1つのiterableを反復しようとしていますそのため、同じループ本体を使用して別のリストを反復処理します。
コードは、私は現在の形でそれを希望方法は機能しない:それはサイクル(A)を使用し続け、私はそれ=サイクル(B)を再定義した後でも。私は、ループ内のコードがループ条件を変更できないスコープの問題があると考えています。私がここでやろうとしていることを達成する方法はありますか、複数のリストを繰り返し処理するために重複またはネストされたfor-loopsを作成する必要がありますか?
フラグを使用するのではなく、単に 'it = iter_A'を使用し、その後' it = iter_B'に切り替えます。 –