Pythonではwhile, forのループにelseを使えます。
これは他の言語には珍しい機能で、ありがちなケースでは「ループ処理で何かを探索して見つけたらbreakする、breakしなかったら見つからなかった」といったケースでフラグ変数を使う必要がなくなります。
elseを使わないループ
elseを使わない、ありがちなループ探索処理の場合は、見つかった場合にフラグを更新してbreakし、ループの外側でフラグの状態をチェックしたif文を記述します。
ary = [1, 3, 9, 2, 1] exist = False for n in ary: if n == 9: exist = True break if exist: print "Found! 9" else: print "Not found 9.."
elseを使うループ
elseを使った場合は、existフラグを使用する必要がなくなります。
ary = [1, 3, 9, 2, 1] for n in ary: if n == 9: print "Found! 9" break else: print "Not found 9.."
elseブロックが処理されるのは、「breakでループを抜けなかった時」です。補足すると「ループを一度も実行しなかった時」も含まれます。
たとえば以下のケースは、aryが長さ0のリストなのでループ内は一度も処理しません。したがってelseブロックが実行されます。
ary = [] for n in ary: if n == 9: print "Found! 9" break else: print "Not found 9.."