Q
組み合わせは
7
A
答えて
14
itertools.product(..)
を使用できますが、repeat
をrepeat=len(a)
と指定してください。だから、あなたが使用することができます。
from itertools import product
def mul_product(a,b):
for tup in product(b,repeat=len(a)):
yield ' '.join('%s_%s'%t for t in zip(a,tup))
product(..)
のようなタプルが生成されます。だからここ
>>> list(product(b,repeat=len(a)))
[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]
をタプルの最初の要素はa_
に装着されている1、b_
に2番目です。それらは
>>> list(map(lambda bi:list(zip(a,bi)),product(b,repeat=len(a))))
[[('a', 1), ('b', 1)], [('a', 1), ('b', 2)], [('a', 1), ('b', 3)], [('a', 2), ('b', 1)], [('a', 2), ('b', 2)], [('a', 2), ('b', 3)], [('a', 3), ('b', 1)], [('a', 3), ('b', 2)], [('a', 3), ('b', 3)]]
今ではフォーマットの問題だけ('%s_%s'%t
)であり、それらining ' '.join(..)
一緒にyield
(またはあなたがリストを生成するために、リストの内包表記を使用することができます。今、私たちは生産、a
リストと一緒にそれらをzip(..)
)。
あなたのサンプル入力の結果は次のとおりです。ここでは要素が遅延して生成されること
>>> list(mul_product(a,b))
['a_1 b_1', 'a_1 b_2', 'a_1 b_3', 'a_2 b_1', 'a_2 b_2', 'a_2 b_3', 'a_3 b_1', 'a_3 b_2', 'a_3 b_3']
注意。これは、例えば、最初のk
に興味がある場合や、すべてを一度に生成したくない場合に便利です。
4
あなたは明示的に再度itertools.product
に供給できる2つのリストが含まれますitertools.product
import itertools
a = ['a', 'b']
b = [1, 2, 3]
pairs = [list(itertools.product([ai], b)) for ai in a]
pairs
で再びそれらのペアで動作し、itertools.product
を使用して、あなたのペアごとのアイテムを作成することができます。
list(itertools.product(*pairs))
結果は次のとおりです。
[(('a', 1), ('b', 1)),
(('a', 1), ('b', 2)),
(('a', 1), ('b', 3)),
(('a', 2), ('b', 1)),
(('a', 2), ('b', 2)),
(('a', 2), ('b', 3)),
(('a', 3), ('b', 1)),
(('a', 3), ('b', 2)),
(('a', 3), ('b', 3))]
関連する問題
- 1. Python itertoolsの組み合わせの組み合わせ
- 2. データウェアハウス:冗長な組み合わせの組み合わせ
- 3. Rは組み合わせ
- 4. 列の組み合わせの組み合わせデータフレームの行ではない
- 5. 2-組み合わせC++
- 6. 組み合わせ質問
- 7. 組み合わせ変数
- 8. の組み合わせR
- 9. 組み合わせルックアップ値
- 10. ワイアードの組み合わせ
- 11. 組み合わせ条件
- 12. 組み合わせルビー
- 13. Pythonの組み合わせ
- 14. 組み合わせ選択
- 15. ReferenceManyFields/ReferenceArrayField組み合わせ
- 16. 組み合わせmysql mongodb
- 17. 組み合わせが
- 18. マッチ組み合わせが
- 19. の組み合わせR
- 20. 選択組み合わせ
- 21. メディアクエリステートメントの組み合わせ
- 22. DataFrameの組み合わせ
- 23. ロックの組み合わせ
- 24. 組み合わせ式
- 25. 各組み合わせのリストの1つの要素の組み合わせ
- 26. 配列と組み合わせパターンの組み合わせを見つける
- 27. クエリの組み合わせを組み合わせるためのLinq構文
- 28. は、組み合わせグループとここ
- 29. スパークは、データフレームを組み合わせ、GraphX
- 30. 組み合わせは、ここで