2008年9月21日日曜日

Python で for ループを回し切った後に行う処理と、深部からの脱出

1. for ループを回し切った後に処理を行う

Python では、for ループを回し切った後に行う処理を指定できる。

7.3 for 文 によると、

最初のスイート内で break 文が実行されると、else 節のスイートを実行することなくループを終了します。

for に対応した else を書けば良い。試してみる。

for i in range(0,5):
    if i == 3: break
    print i
else:
    print u"回し切った!"


for i in range(0,5):
    print i
else:
    print u"回し切った!"

結果、

0
1
2
0
1
2
3
4
回し切った!

for ループの途中で break されなければ else 節が実行される。

 

2. for ループからの脱出

Python には、ネストされたループの中で一気に脱出する Java の goto みたいなのはないのかな?

には、ループを脱出方法として、例外が使われている。

class END(Exception):
    pass

try:
    for j in range(0,3):
        for i in range(0,5):
            if i == 4 and j == 2:
                raise END
            print i, j
except END:
    print "END"

には、モジュールを使う方法が書かれている。