問題タブ [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でインポートされたcsvファイルの行と列を取得するには?
アプリケーション用に複数の csv ファイルがあります。csvファイルを読み取って行数と列数を取得しようとしています。引数 file_path を介して送信する 2 つの csv ファイルがあります。最初のファイルは 5 行 3 列で、2 番目のファイルは 5 行 5 列です。しかし、以下のコードを使用すると、4 行 3 列の First file と 4 行 5 列の Second file が得られます。行数から1行の読み取りをスキップする理由がわかりません。
一方、row_count のコードを最初に実行し、col_count のコードを後で実行すると、StopIteration 例外が発生します。
これは非常に単純な問題かもしれませんが、Python の初心者である私にとっては、どんな助けも大歓迎です。ありがとう
python - Pythonのsearch_queryでランダムな学術結果の問題を生成する
学術検索結果用に以下の関数を作成しました。
そしてその機能を以下に実装しました:
ただし、結果は学術的にランダムな4つの結果を示しています。最後に 4 [なし、なし、なし、なし] があります。
python - StopIteration を発生させた後、反復子は永久に停止する必要がありますか?
処理時に消費されるパケットのキューを時々蓄積する Receiver オブジェクトがあります。このレシーバーにイテレーター プロトコルを持たせることは合理的と思われるため、next( receiver )
手動で次のパケットを取得for packet in receiver
し、現在利用可能なパケットを反復処理します。直感的には、このような繰り返しを 1 回実行し、受信側が値for
を上げてループを停止するまで利用可能なすべてのパケットを処理しStopIteration
(これは、イテレーターがfor
停止する時間をループに通知する標準的な方法です)、後でそのようなfor
もう一度ループして、その間に到着した新しいパケットを処理します。
ただし、Python のドキュメントには次のように書かれています。
イテレータの
__next__()
メソッドが を発生させるStopIteration
と、後続の呼び出しでも引き続き発生させる必要があります。このプロパティに従わない実装は壊れていると見なされます。
このコードはおそらく「壊れていると見なされる」と思われますが、私が知る限り、問題なく動作します。ですから、一見うまく機能しているように見え、イテレータが機能することを直感的に期待する方法でコードを作成することは、私にとってどれほど悪いことでしょうか? 調達した後にさらにアイテムを返すことについて、実際に壊れているものはありますStopIteration
か? これを変更する必要がある理由はありますか?
(レシーバーをイテレーター自体 (独自のメソッドを持つ) ではなく、単なる反復可能(そのメソッドが他のイテレーターを生成する)にすることができることは認識していますが、(a) これは、おなじみの直感的な使用法をサポートしません。__iter__
__next__
next( receiver )
次のパケットをキューからポップする (b) 完全に問題のないイテレータのようなオブジェクトを既に持っている場合、新しいイテレータ オブジェクトを繰り返し生成するのは無駄で非効率的です。 c) レシーバーがパケットを取得するときにパケットを消費するため、レシーバーを一種の反復可能なコンテナーとして提示するのは誤解を招く可能性があります (私が Python ラッパーを作成している C ライブラリーに組み込まれた動作であり、私はそうは思いません)。 Python でもキャッシュを開始するのは理にかなっています)、したがって、誰かが複数のイテレータを作成して、受信者のキューを自分のペースでトラバースしようとした場合、イテレータは互いにアイテムを盗み、これを単一のストップ アンド ゴーイテレータとして提示することから生じる結果よりもはるかに紛らわしい結果をもたらします。反復可能なコンテナーとしてではなく)。