問題タブ [stopiteration]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python: StopIteration 例外とリスト内包表記
csv ファイルから最大 20 行を読み取りたい:
ファイルに 20 行以上ある場合は問題なく動作し、それ以外の場合は StopIteration 例外で失敗します。
リスト内包表記で StopIteration 例外をスローする可能性のある反復子を処理するエレガントな方法はありますか、それとも通常の for ループを使用する必要がありますか?
python - Pythonのyieldとstopiterationを1つのループで?
実際のコンテンツに初期値と最終値を追加したいジェネレーターがあります。これは次のようなものです。
もちろん、上記のコードは機能しません-私の問題は、キューに何も残っていないときに、ジェネレーターに吐き出してfooter
を上げてもらいたいということStopIterator
です。何か案は?
乾杯、
python - イテレータの外側から for ループに StopIteration を送る
いくつかのネストされたループから抜け出す方法はいくつかあります
彼らです:
1) ブレークコンティニューを使用する
2) return を使用する
3) 特別な例外を使用するには
何か別の方法があるのではないかという考えもありました。これは、外側のループに直接送信される StopIteration 例外を使用することによるものです。私はこのコードを書きました
残念ながら、StopIteration はどの for ループにもキャッチされず、そのコードは醜い Traceback を生成しました。iterator itの内部から StopIteration が送信されなかったことが原因だと思います。(これは私の推測であり、よくわかりません)。
StopIteration を外側のループに送信する方法はありますか?
ありがとう!
python - PythonジェネレーターにStopIterationではなくNoneを返すようにするにはどうすればよいですか?
私はジェネレーターを使用して、次の簡単な例のようなリストで検索を実行しています。
(例を少しフレームに入れるために、上記のリストに比べて非常に長いリストを使用していますint
。エントリはより少し複雑です。このようにすると、リスト全体が毎回トラバースされなくなります。それらを検索)
代わりにこれをに変更すると、にエントリが見つからないため、i == 666
が返されます。StopIteration
666
a
代わりにどうすれば返品できNone
ますか?もちろん、それをtry ... except
句で囲むこともできますが、それを行うためのよりPython的な方法はありますか?
python - イテレータから戻り、StopIteration をスローします
イテレータが使い果たされたときに最後にもう一度何かを返す良い方法は何でしょうか。私はフラグを使用していますが、これはかなり醜いです:
背景: 外部ソースから不明な量の文字列をフェッチし、呼び出し元に送信しています。プロセスが終了したら、文字列「x レコードが処理されました」を出力したいと考えています。コードの呼び出しを制御できないため、これはイテレータ内で行う必要があります。
python - リストを繰り返し処理し、PythonでStopIterationを美しく処理します
リストを反復処理しようとしていますが、反復がリストの最後に達したときにのみ特定の操作を実行する必要があります。以下の例を参照してください。
このコードはあまりPythonicではないと思うので、より良い方法を探しています。理想的なコードは、以下の架空の部分のようになるはずです。
どんな考えでも大歓迎です。
python - StopIteration を無視
Python で StopIteration エラーを処理する方法に関する一連の投稿を読んだところですが、特定の例を解決するのに苦労しました。基本的に、多くのプレフィックスを含む csv ファイルがあります。このファイルには、ヘッダー付きの 2 つの列 (Word と Count) があります。カウントは、そのプレフィックスが発生する頻度です。会社名のリストを含む別のファイルもあります。プレフィックス ファイルは、会社ファイル内の各会社名の最初の単語からプレフィックスを取得しました。重複を削除しようとしていますが、今やりたいことは次のとおりです。
このエラーが発生するたびに StopIteration エラーを無視します。
つまり、コメントアウトされたすべての「if」ステートメントを以下に記述する代わりに、「StopIteration エラーが発生した場合は単にエラーを無視する」という 1 行が必要です。接頭辞ファイルに 2 回以上出現する接頭辞であったため、接頭辞を含めずに会社名の値を返す必要があります。これは、プレフィックスファイルと会社名の実際のプレフィックスに異なるプレフィックス値があるという事実を無視していることに気付きましたが、通常、Python と Excel の間で異なる方法で保存されたアメリカ英語以外の文字と関係があります。特に体系的とは思えない方法なので、後で手動で削除します。
私のコードは次のとおりです。
python - ジェネレーターの raise StopIteration と return ステートメントの違いは何ですか?
raise StopIteration
usingとreturn
ジェネレーターのステートメントの違いに興味があります。
たとえば、これら 2 つの機能に違いはありますか?
より「pythonic」な方法は2番目の方法だと思いますが(間違っている場合は修正してください)、両方の方法でStopIteration
例外が発生することがわかります。
python - 次に「StopIteration」を発生させるのに、「for」は通常のリターンを行うのはなぜですか?
このコードでは、使用するとfor
結果が発生しないのはなぜですかStopIteration
、またはfor
ループがすべての例外をトラップしてからサイレントに終了するのですか?その場合、なぜ私たちは無関係なのですreturn
か?または、次の
raise StopIteration
原因によるものですreturn None
か?
StopIteration
によってトリガーされていると仮定しますreturn None
。いつGeneratorExit
生成されますか?
手動で行う場合:
その場合、なぜトレースバックが表示されないのですか?