呼び出すとStopIteration例外とリスト内包表記:ファイルが20の以上の行を持っている場合Pythonの:私はcsvファイルから最大20行を読みたい
rows = [csvreader.next() for i in range(20)]
は、罰金の作品はそうでない場合を呼び出すとStopIteration例外で失敗します。
イテレータを扱うエレガントな方法は、リストの理解にStopIteration例外をスローする可能性がありますか、または定期的なforループを使用する必要がありますか?
ありがとうございます。 StopIterationを処理するためにリストの内容を更新する必要があるようですね。 "for"はそれに対処するために既に更新されているようです(暗黙のうちに例外が発生したときに反復をやめてしまいます)、リストの理解の理由が分かりません。 – Parand
は、iterableを基準にしたStopIterationを捕捉し、そのスイート内の他のオブジェクトは捕捉しません。例えば、範囲(10)内のiについて C = ITER(範囲(5)) :私は \tプリント、c.next() は、cに対して呼び出すとStopIteration例外が発生します。 – Mapio
forループは、暗黙的にStopIterationを捕捉しません。イテレータの次のメソッドによってスローされた場合にのみ、ループボディにスローされます。あなたの質問では、csvreader.next()はループ本体に似ています。 – Miles