ホームページ > バックエンド開発 > Python チュートリアル > Python でリストのすべての順列を生成するにはどうすればよいですか?

Python でリストのすべての順列を生成するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-22 13:15:12
オリジナル
915 人が閲覧しました

How Can I Generate All Permutations of a List in Python?

リストのすべての順列の生成

要素のリストが与えられた場合、タスクは要素の可能なすべての順列を生成することです。順列は、リスト内の要素のさまざまな組み合わせです。

標準ライブラリ ソリューション

Python 標準ライブラリは、この目的のために itertools.permutations 関数を提供します。

import itertools
list(itertools.permutations([1, 2, 3]))
ログイン後にコピー

このコードは、リスト [1, 2, 3] のすべての順列を生成し、それらをタプルのリスト。

代替実装

再帰を使用した置換関数の代替実装を次に示します。

def permutations(elements):
    if len(elements) <= 1:
        yield elements
        return
    for perm in permutations(elements[1:]):
        for i in range(len(elements)):
            yield perm[:i] + elements[0:1] + perm[i:]
ログイン後にコピー

この実装は次のように置換を構築します。リストの最初の要素を残りの要素の順列の異なる位置に繰り返し追加します。 elements.

もう 1 つの代替アプローチでは、itertools.product を使用します。

def permutations(iterable, r=None):
    pool = tuple(iterable)
    n = len(pool)
    r = n if r is None else r
    for indices in product(range(n), repeat=r):
        if len(set(indices)) == r:
            yield tuple(pool[i] for i in indices)
ログイン後にコピー

この実装は、0 から n-1 (n はリストの長さ) までのインデックスの可能なすべての組み合わせを反復し、インデックスが一意である場合は、各組み合わせからの順列 (リスト内の各要素が 1 回含まれていることを示します)。

以上がPython でリストのすべての順列を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート