ファイルの読み込みと for~in
当たり前といえば、当たり前なんだけど。
ファイルの読み込みで for~in を途中で break して、また同じファイルに for~in すると続きを読むことができる。
with open(filename, 'r') as source: for line in source: out.write(line) # 1 行目を出力 break; for line in source: out.write(line) # 2 行目以降を出力
ジェネレータ関数に対する for~in でも同じ挙動。
def num(): for n in range(10): yield n def boo(): b = num() for n in b: print n # 0 を出力 break for n in b: print n # 1 以降を出力
listやdict.iter*()などは常に先頭から返しなおす。
def foo(): a = [1, 2, 3] for n in a: print n # 1 を出力 break for n in a: print n # 1 から出力しなおす
def foo(): a = {'abc': 0, 'def': 1, 'xyz': 3} for n in a.iterkeys(): print n # 'abc' を出力 break for n in a.iterkeys(): print n # 'abc' から出力しなおす