リストの要素から可能なすべての 2^N の組み合わせを生成する方法を探しています。 15 個の要素のリスト。元の順序を維持しながら、任意の長さの組み合わせに対応します。バイナリ表現を使用するアプローチは実行可能なオプションですが、より包括的なソリューションを検討してみましょう。
バイナリ表現に依存する代わりに、Python 標準ライブラリの itertools.combinations() 関数の採用を検討してください。この関数は、指定された反復可能オブジェクトから指定された長さのすべての組み合わせのシーケンスを生成します。長さパラメータを変更することで、任意のサイズの組み合わせを取得できます。
次の Python コードは、このアプローチを示しています。
import itertools stuff = [1, 2, 3] # Loop through all possible lengths for L in range(len(stuff) + 1): # Generate combinations of length L for subset in itertools.combinations(stuff, L): print(subset)
このコードは、要素の 32,768 通りの可能な組み合わせをすべて生成します。
あるいは、より効率的なソリューションとして、chain() を使用することもできます。
import itertools from itertools import chain, combinations def all_subsets(ss): return chain(*map(lambda x: combinations(ss, x), range(0, len(ss)+1))) for subset in all_subsets(stuff): print(subset)
このコードは同じ結果を達成しますが、より簡潔でおそらくエレガントな方法で実現されます。
以上がPython でリストの要素の可能なすべての組み合わせを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。