問題タブ [generator]

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 投票する
47 に答える
2829514 参照

python - "yield" キーワードは何をしますか?

yieldPythonでのキーワードの使用は何ですか? それは何をするためのものか?

たとえば、私はこのコード1を理解しようとしています:

そして、これは呼び出し元です:

メソッド_get_child_candidatesが呼び出されるとどうなりますか? リストは返されますか? 単一の要素?また呼ばれますか?後続の通話はいつ停止しますか?


1. このコードは Jochen Schulz (jrschulz) によって書かれました。彼はメートル空間用の優れた Python ライブラリを作成しました。これは完全なソースへのリンクです: Module mspace
0 投票する
2 に答える
784 参照

ruby-on-rails - Rails ジェネレーター m.directory の戻り値は nil を文字列に変換できません

このジェネレーター コードを作成しましたが、マニフェスト内で m.directory を呼び出すと、「nil を文字列に変換できません」が返されます。何があったか知ってる人いますか?

終わり

0 投票する
10 に答える
19268 参照

python - Python ジェネレーターを使用するのに適していないのはいつですか?

これは、 Python ジェネレーター関数を何に使用できますか?の逆です。: python ジェネレーター、ジェネレーター式、およびitertoolsモジュールは、最近の python の私のお気に入りの機能の一部です。これらは、大量のデータに対して一連の操作を実行するように設定する場合に特に便利です。DSV ファイルを処理するときによく使用します。

では、ジェネレーター、ジェネレーター式、または関数を使用するのに適していないitertoolsのはどのような場合でしょうか?

  • zip()itertools.izip()または_
  • range()以上xrange()、または
  • [x for x in foo]以上(x for x in foo)

明らかに、最終的にはジェネレーターを実際のデータに「解決」する必要があります。通常は、リストを作成するか、ジェネレーター以外のループで反復処理します。長さを知る必要がある場合もあります。これは私が求めているものではありません。

中間データ用に新しいリストをメモリに割り当てないように、ジェネレータを使用します。これは、大規模なデータセットの場合に特に意味があります。小さなデータセットにも意味がありますか? 顕著なメモリ/CPU のトレードオフはありますか?

リスト内包表記のパフォーマンスと map() および filter()の目を見張るような議論に照らして、誰かがこれについてプロファイリングを行っているかどうかに特に興味があります。(代替リンク)

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

python - Python:ジェネレータとして再帰的アルゴリズムを使用する

最近、重要な制約を持つ特定のシーケンスを生成する関数を作成しました。問題は自然な再帰的解決策にありました。さて、入力が比較的小さい場合でも、シーケンスは数千であるため、すべてのシーケンスでリストを埋めるために使用するのではなく、ジェネレーターとしてアルゴリズムを使用することをお勧めします。

これが例です。再帰関数を使用して文字列のすべての順列を計算するとします。次の素朴なアルゴリズムは、追加の引数'storage'を取り、それが見つかるたびに順列を追加します。

(非効率性については気にしないでください。これは単なる例です。)

ここで、関数をジェネレーターに変換します。つまり、ストレージリストに追加するのではなく、順列を生成します。

このコードは機能しませ(関数は空のジェネレーターのように動作します)。

私は何かが足りないのですか?上記の再帰的アルゴリズムを反復的なものに置き換えることなくジェネレーターに変える方法はありますか?

0 投票する
7 に答える
6738 参照

.net - .NET 用の名前ジェネレータ

かなり正確に見える西欧スタイルの名前を生成するライブラリを書いた、または知っている人はいますか? つまり、ジョン、スーザン、スミス、ジュリアン、エイプリルなど...

0 投票する
5 に答える
84933 参照

python - ジェネレーターからnumpy配列を構築するにはどうすればよいですか?

ジェネレーターオブジェクトからnumpy配列を構築するにはどうすればよいですか?

問題を説明しましょう:

この例でgimme()は、出力を配列に変換したいジェネレーターです。ただし、配列コンストラクターはジェネレーターを反復処理せず、ジェネレーター自体を格納するだけです。私が望む動作は からnumpy.array(list(gimme()))のものですが、中間リストと最終配列を同時にメモリに持つことによるメモリオーバーヘッドを払いたくありません。よりスペース効率の良い方法はありますか?

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

c - Yacc 問題: 次の非ターミナルでデータを利用できるようにする

b で生成したいくつかの変数を c で使用できるようにしたい:

簡単な例:

だから私は、後でcで言うことができます:

それを行う機会はありますか?どんな助けでも本当に感謝します!

0 投票する
9 に答える
101412 参照

python - 発電機出力の長さ

Python は、熱心な iterable の長さを取得するための優れた方法を提供しますlen(x)。しかし、ジェネレータ内包表記と関数で表される遅延イテラブルに似たものは見つかりませんでした。もちろん、次のようなものを書くのは難しくありません。

しかし、自転車を再実装しているという感覚は拭えません。

(関数を入力しているときに、考えが頭に浮かびました。引数を「破棄」するため、そのような関数は実際には存在しない可能性があります。ただし、私の場合は問題ではありません)。

PS: 最初の回答について - はい、次のようなものlen(list(x))も機能しますが、メモリの使用量が大幅に増加します。

PPS: 再チェック... PS は無視してください。試行中に間違いを犯したようです。正常に動作します。ご迷惑おかけして申し訳ありません。

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

.net - ジェネレータを使用してツリー構造を反復する方法は?

すべての子孫の葉 (直接または間接) を返すツリー ノードに関数を実装する方法を理解しようとしています。ただし、リーフノードが再帰的に配置されるコンテナーを渡したくありません (ツリーが巨大になる可能性があります)。代わりに、ジェネレーターを使用してツリーを反復処理したいと考えています。いくつかのアプローチを試しましたが、これまでのところどれもうまくいきませんでした。これは、私が考えられる解決策に最も近いものです:

しかし、これも機能していません。私は何を間違っていますか?同じ関数にyieldステートメントがある場合、.EnumerateLeavesを再帰的に呼び出すことはできません。

どんな助けでも大歓迎です。前もって感謝します。

編集:ブランチは葉または枝のいずれかを子として持つことができるため、再帰があることを忘れていました。

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

nhibernate - NHibernateとFirebirdでIDを生成するにはどうすればよいですか?

NHibernateを使用してFirebirdデータベースにいくつかの新しいオブジェクトを挿入しようとしています。

「次のシーケンス値を取得できませんでした[SQL:SQLが利用できません]」というエラーが表示されます

これが私が現在使用しているマッピングです。注ANML_EVNTは、使用するジェネレーターの名前です。