continue
Python で 2 つのネストされたループの親ループを作成するにはどうすればよいですか?
for a in b:
for c in d:
for e in f:
if somecondition:
<continue the for a in b loop?>
ほとんどの場合、これを回避できることはわかっていますが、Pythonで実行できますか?
continue
Python で 2 つのネストされたループの親ループを作成するにはどうすればよいですか?
for a in b:
for c in d:
for e in f:
if somecondition:
<continue the for a in b loop?>
ほとんどの場合、これを回避できることはわかっていますが、Pythonで実行できますか?
毎回5人で行きます。
これを行うためのハックな方法を次に示します。
ローカル関数を作成する
for a in b:
def doWork():
for c in d:
for e in f:
if somecondition:
return # <continue the for a in b loop?>
doWork()
より良いオプションは、doWork を別の場所に移動し、その状態を引数として渡すことです。
例外を使用する
class StopLookingForThings(Exception): pass
for a in b:
try:
for c in d:
for e in f:
if somecondition:
raise StopLookingForThings()
except StopLookingForThings:
pass
from itertools import product
for a in b:
for c, e in product(d, f):
if somecondition:
break
break
内側のループから抜け出し、親で続行するために使用します
for a in b:
for c in d:
if somecondition:
break # go back to parent loop
lista = ["hello1", "hello2" , "world"]
for index,word in enumerate(lista):
found = False
for i in range(1,3):
if word == "hello"+str(i):
found = True
break
print(index)
if found == True:
continue
if word == "world":
continue
print(index)
今何が印刷されています:
>> 1
>> 2
>> 2
これは、単語 no.1 ( index = 0 ) が最初に出現したことを意味します (continue ステートメントの前に何かを出力する方法はありません)。単語 no.2 ( index = 1 ) が 2 番目に表示され (単語 "hello1" はなんとか印刷されましたが、残りは印刷されませんでした )、単語 no.3 が 3 番目に表示されました。 forループがこの3番目の単語に到達する前に出力されました。
要約すると、found = False / True ブール値と break ステートメントを使用するだけです。
それが役に立てば幸い!