問題タブ [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.

0 投票する
3 に答える
5557 参照

python - Python: StopIteration 例外とリスト内包表記

csv ファイルから最大 20 行を読み取りたい:

ファイルに 20 行以上ある場合は問題なく動作し、それ以外の場合は StopIteration 例外で失敗します。

リスト内包表記で StopIteration 例外をスローする可能性のある反復子を処理するエレガントな方法はありますか、それとも通常の for ループを使用する必要がありますか?

0 投票する
3 に答える
38663 参照

python - Pythonのyieldとstopiterationを1つのループで?

実際のコンテンツに初期値と最終値を追加したいジェネレーターがあります。これは次のようなものです。

もちろん、上記のコードは機能しません-私の問題は、キューに何も残っていないときに、ジェネレーターに吐き出してfooterを上げてもらいたいということStopIteratorです。何か案は?

乾杯、

0 投票する
4 に答える
4092 参照

python - イテレータの外側から for ループに StopIteration を送る

いくつかのネストされたループから抜け出す方法はいくつかあります

彼らです:

1) ブレークコンティニューを使用する

2) return を使用する

3) 特別な例外を使用するには

何か別の方法があるのではないかという考えもありました。これは、外側のループに直接送信される StopIteration 例外を使用することによるものです。私はこのコードを書きました

残念ながら、StopIteration はどの for ループにもキャッチされず、そのコードは醜い Traceback を生成しました。iterator itの内部から StopIteration が送信されなかったことが原因だと思います。(これは私の推測であり、よくわかりません)。

StopIteration を外側のループに送信する方法はありますか?

ありがとう!

0 投票する
2 に答える
37523 参照

python - PythonジェネレーターにStopIterationではなくNoneを返すようにするにはどうすればよいですか?

私はジェネレーターを使用して、次の簡単な例のようなリストで検索を実行しています。

(例を少しフレームに入れるために、上記のリストに比べて非常に長いリストを使用していますint。エントリはより少し複雑です。このようにすると、リスト全体が毎回トラバースされなくなります。それらを検索)

代わりにこれをに変更すると、にエントリが見つからないため、i == 666が返されます。StopIteration666a

代わりにどうすれば返品できNoneますか?もちろん、それをtry ... except句で囲むこともできますが、それを行うためのよりPython的な方法はありますか?

0 投票する
4 に答える
8261 参照

python - イテレータから戻り、StopIteration をスローします

イテレータが使い果たされたときに最後にもう一度何かを返す良い方法は何でしょうか。私はフラグを使用していますが、これはかなり醜いです:

背景: 外部ソースから不明な量の文字列をフェッチし、呼び出し元に送信しています。プロセスが終了したら、文字列「x レコードが処理されました」を出力したいと考えています。コードの呼び出しを制御できないため、これはイテレータ内で行う必要があります。

0 投票する
1 に答える
10567 参照

python - リストを繰り返し処理し、PythonでStopIterationを美しく処理します

リストを反復処理しようとしていますが、反復がリストの最後に達したときにのみ特定の操作を実行する必要があります。以下の例を参照してください。

このコードはあまりPythonicではないと思うので、より良い方法を探しています。理想的なコードは、以下の架空の部分のようになるはずです。

どんな考えでも大歓迎です。

0 投票する
2 に答える
6584 参照

python - StopIteration を無視

Python で StopIteration エラーを処理する方法に関する一連の投稿を読んだところですが、特定の例を解決するのに苦労しました。基本的に、多くのプレフィックスを含む csv ファイルがあります。このファイルには、ヘッダー付きの 2 つの列 (Word と Count) があります。カウントは、そのプレフィックスが発生する頻度です。会社名のリストを含む別のファイルもあります。プレフィックス ファイルは、会社ファイル内の各会社名の最初の単語からプレフィックスを取得しました。重複を削除しようとしていますが、今やりたいことは次のとおりです。

このエラーが発生するたびに StopIteration エラーを無視します。

つまり、コメントアウトされたすべての「if」ステートメントを以下に記述する代わりに、「StopIteration エラーが発生した場合は単にエラーを無視する」という 1 行が必要です。接頭辞ファイルに 2 回以上出現する接頭辞であったため、接頭辞を含めずに会社名の値を返す必要があります。これは、プレフィックスファイルと会社名の実際のプレフィックスに異なるプレフィックス値があるという事実を無視していることに気付きましたが、通常、Python と Excel の間で異なる方法で保存されたアメリカ英語以外の文字と関係があります。特に体系的とは思えない方法なので、後で手動で削除します。

私のコードは次のとおりです。

0 投票する
3 に答える
35103 参照

python - ジェネレーターの raise StopIteration と return ステートメントの違いは何ですか?

raise StopIterationusingとreturnジェネレーターのステートメントの違いに興味があります。

たとえば、これら 2 つの機能に違いはありますか?

より「pythonic」な方法は2番目の方法だと思いますが(間違っている場合は修正してください)、両方の方法でStopIteration例外が発生することがわかります。

0 投票する
1 に答える
124172 参照

python - 次に「StopIteration」を発生させるのに、「for」は通常のリターンを行うのはなぜですか?

このコードでは、使用するとfor結果が発生しないのはなぜですかStopIteration 、またはforループがすべての例外をトラップしてからサイレントに終了するのですか?その場合、なぜ私たちは無関係なのですreturnか?または、次の raise StopIteration原因によるものですreturn Noneか?

StopIterationによってトリガーされていると仮定しますreturn None。いつGeneratorExit生成されますか?

手動で行う場合:

その場合、なぜトレースバックが表示されないのですか?