私はこの機能を持っていますg()
私の目標は、product()
と似た結果を出すことですが、文字のグループごとに制限された見た目の数があります。ですから、product(a, repeat=3)
g()
を実行する代わりに、以下のコードでは、a
の文字が2回、b
の文字が1回表示されるすべての組み合わせが返されます。ここで私が持っているものです。ジェネレータを生成するときの歩留まりを平準化する方法は?
from itertools import permutations, product
a='ABC'
b=['*', '%3A']
l=[a]*2+[b]
def g(list):
for p in permutations(list):
yield product(*p)
result=g(l)
だから私が直面してる問題は、私は結果をyield
ときに私が使用して痛みがあり、ネストされたイテレータを持って、私はそれを返す使用するときだけだけに対応した発電機を返すということです最初のループターン、ちょうど私がした場合:g()
はdef g(): return product(*next(permutations(list)))
で構成されています。
あなたは 'G'ジェネレータを書いていないし、あなただけしたい場合は、あなたがどうなるのかを考えてみてくださいすべての組み合わせで 'some_function(x)'を呼び出してください。そのコードを書いて、 'some_function'を' yield'に置き換えてください。 – user2357112
あなたはどのバージョンのPythonをターゲットにしていますか?(ここから 'yield from 'を使うことができますか?) – snakecharmerb
@snakecharmerb python 3、ああ、そうだね、「収穫量」が忘れている。私は 'c = chain(c、product(* p)) 'を使って問題を解決し、最後にcを返し、それを掲示した直後のアイデア。 – ChiseledAbs