Python でのリストの組み合わせ

Samyak Jain 2023年1月30日
  1. Python で itertools.combinations() 関数を使用してリストの組み合わせを検索する
  2. Python で itertools.combinations_with_replacement() 関数を使用してリストの組み合わせを検索する
  3. Python でユーザー定義の powerset() 関数を作成してリストの組み合わせを検索する
Python でのリストの組み合わせ

組み合わせは、要素のコレクション内の可能な配置の数を決定する手法です。要素の組み合わせでは、要素は任意の順序で選択されます。

このチュートリアルでは、Python でのリストの要素の合計の組み合わせを見つけます。

Python で itertools.combinations() 関数を使用してリストの組み合わせを検索する

itertools モジュールの関数 combinations(list_name, x) は、リスト名と数値 ‘x’をパラメーターとして受け取り、長さ ‘x’のタプルのリストを返します。他の要素を含むリスト。

例えば、

from itertools import combinations

A = [10, 5, "Hi"]
temp = combinations(A, 2)
for i in list(temp):
    print(i)

出力:

(10, 5)
(10, 'Hi')
(5, 'Hi')

ソートされたリストは、ソートされた順序で組み合わせタプルを出力します。combinations() 関数を使用して、リスト内の 1つの要素をそれ自体と組み合わせることはできません。

Python で itertools.combinations_with_replacement() 関数を使用してリストの組み合わせを検索する

itertools モジュールの関数 combinations_with_replacement(list_name, x) は、リスト名と番号 ‘x’をパラメーターとして受け取り、リストの要素のすべての可能な組み合わせを含む長さ ‘x’のタプルのリストを返します。この関数を使用すると、リスト内の 1つの要素とそれ自体を組み合わせることができます。

例えば、

from itertools import combinations_with_replacement

A = [1, 5, "Hi"]
temp = combinations_with_replacement(A, 2)
for i in list(temp):
    print(i)

出力:

(1, 1)
(1, 5)
(1, 'Hi')
(5, 5)
(5, 'Hi')
('Hi', 'Hi')

Python でユーザー定義の powerset() 関数を作成してリストの組み合わせを検索する

数学では、任意のセットのべき集合は、空のセットとともに、特定のセットのすべての可能なサブセットを含むセットです。セット S = {2, 5, 10} のべき集合は {{}, {2}, {5}, {10}, {2, 5}, {2, 10}, {5, 10}, {2, 5, 10}} です。次の関数 powerset() は、リストのすべての長さ ‘r’をループし、リストの要素のすべての可能な組み合わせを出力するために使用されます。

例えば、

from itertools import chain, combinations


def powerset(list_name):
    s = list(list_name)
    return chain.from_iterable(combinations(s, r) for r in range(len(s) + 1))


A = [60, 7, "Hi"]
for x in powerset(A):
    print(x)

出力:

()
(1,)
(5,)
('Hi',)
(1, 5)
(1, 'Hi')
(5, 'Hi')
(1, 5, 'Hi')

関連記事 - Python List