タグ付けされた質問 「generator」

ジェネレータは、主にイテレータの記述を簡略化するために使用されるサブルーチンの一般化です。ジェネレーターのyieldステートメントは、ジャンプ先のコルーチンを指定せず、親ルーチンに値を返します。

30
「yield」キーワードは何をしますか?
yieldPython でのキーワードの用途とは何ですか? たとえば、私はこのコードを理解しようとしています1: def _get_child_candidates(self, distance, min_dist, max_dist): if self._leftchild and distance - max_dist < self._median: yield self._leftchild if self._rightchild and distance + max_dist >= self._median: yield self._rightchild そしてこれが呼び出し元です: result, candidates = [], [self] while candidates: node = candidates.pop() distance = node._get_dist(obj) if distance <= max_dist and distance >= min_dist: …



8
Ruby on Railsはモデルfield:typeを生成します-field:typeのオプションは何ですか?
新しいモデルを生成し、別のモデルのIDを参照するための構文を忘れようとしています。自分で調べますが、Ruby on Railsのすべてのドキュメントリンクの中で、最終的なソースを見つける方法はわかりません。 $ rails g model Item name:string description:text(そしてここではreference:productまたはreferences:product)。しかし、より良い質問は、この種の愚かさを将来どこで、またはどのようにして簡単に探すことができるかです 注:これらのオプションのいずれかを誤って入力して移行を実行すると、 Ruby on Railsがデータベースを完全にrake db:rollback台無しにしてしまい、そのような台無しに対して無力になるという難しい方法を学びました。私は何かを理解していないと確信していますが、私が理解するまでは...によって返された「詳細な」情報はrails g modelまだ私を引っ掻き続けています...

11
Pythonで大きなファイルを読み取るための遅延メソッド?
私は4GBの非常に大きなファイルを持っていますが、それを読み込もうとするとコンピューターがハングします。だから私はそれを少しずつ読みたいと思います、そして各ピースを処理した後、処理されたピースを別のファイルに保存して次のピースを読みます。 yieldこれらの作品に何か方法はありますか? 怠惰な方法が欲しいです。


8
PHPのyieldとはどういう意味ですか?
私は最近このコードにつまずいた: function xrange($min, $max) { for ($i = $min; $i <= $max; $i++) { yield $i; } } このyieldキーワードを見たことがありません。取得したコードを実行しようとしています 解析エラー:構文エラー、行xでの予期しないT_VARIABLE それで、このyieldキーワードは何ですか?それは有効なPHPですか?もしそうなら、それをどのように使用しますか?

12
Pythonのジェネレーターを理解する
私は現在、Pythonクックブックを読んでおり、現在ジェネレータを調べています。頭を丸くするのが難しいです。 私はJavaの出身ですが、Javaに相当するものはありますか?この本は「プロデューサー/コンシューマー」について話していましたが、スレッディングについて考えていると聞きました。 ジェネレータとは何ですか?なぜそれを使用するのですか?本を引用することなく、明らかに(本から直接、きちんとした単純な答えを見つけられない限り)。たぶん、例を挙げれば、寛大に感じているなら!
218 python  generator 


7
ジェネレータから1つのアイテムだけを選択する方法(Python)?
次のようなジェネレーター関数があります。 def myfunct(): ... yield result この関数を呼び出す通常の方法は次のとおりです。 for r in myfunct(): dostuff(r) 私の質問、好きなときにいつでもジェネレータから要素を1つだけ取得する方法はありますか?たとえば、私は次のようなことをしたいと思います: while True: ... if something: my_element = pick_just_one_element(myfunct()) dostuff(my_element) ...

11
Pythonで2つのジェネレーターを結合する方法は?
次のコードを変更したい for directory, dirs, files in os.walk(directory_1): do_something() for directory, dirs, files in os.walk(directory_2): do_something() このコードに: for directory, dirs, files in os.walk(directory_1) + os.walk(directory_2): do_something() エラーが発生します: +でサポートされていないオペランドタイプ: 'generator'および 'generator' Pythonで2つのジェネレーターを結合する方法は?
188 python  generator 

5
ジェネレーターから派手な配列を構築するにはどうすればよいですか?
ジェネレータオブジェクトからnumpy配列を構築するにはどうすればよいですか? 問題を説明しましょう: >>> import numpy >>> def gimme(): ... for x in xrange(10): ... yield x ... >>> gimme() <generator object at 0x28a1758> >>> list(gimme()) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> numpy.array(xrange(10)) array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> numpy.array(gimme()) array(<generator …
166 python  numpy  generator 

9
オブジェクトがPythonのジェネレーターオブジェクトであるかどうかを確認する方法
Pythonでは、オブジェクトがジェネレーターオブジェクトかどうかを確認するにはどうすればよいですか? これを試して- >>> type(myobject, generator) エラーを出します- Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'generator' is not defined (オブジェクトがnextジェネレーターになるためのメソッドがあるかどうかを確認できることはわかっていますが、ジェネレーターだけでなく、オブジェクトのタイプを判別できる方法が欲しいです。)
157 python  generator 

19
ES6(ECMAScript 6)で可変変数なしでx回ループするメカニズムはありますか?
xJavaScriptで時間をループさせる一般的な方法は次のとおりです。 for (var i = 0; i < x; i++) doStuff(i); しかし、++演算子を使用したり、可変変数を使用したりしたくありません。では、ES6でx別の方法でループ時間をとる方法はありますか?Rubyのメカニズムが大好きです。 x.times do |i| do_stuff(i) end JavaScript / ES6で似ているものはありますか?私はちょっとごまかして、自分のジェネレータを作ることができました: function* times(x) { for (var i = 0; i < x; i++) yield i; } for (var i of times(5)) { console.log(i); } もちろん私はまだ使っていi++ます。少なくともそれは見えません:)、しかし私はES6にもっと良いメカニズムがあることを望んでいます。

17
Pythonでのジェネレーターオブジェクトのリセット
複数のyieldで返されたジェネレーターオブジェクトがあります。このジェネレータを呼び出す準備は、かなり時間がかかる操作です。そのため、ジェネレータを何度か再利用したいと考えています。 y = FunctionWithYield() for x in y: print(x) #here must be something to reset 'y' for x in y: print(x) もちろん、私はコンテンツを単純なリストにコピーすることを念頭に置いています。ジェネレーターをリセットする方法はありますか?
153 python  generator  yield 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.