ホームページ  >  記事  >  バックエンド開発  >  異なる長さのリストから順列を効率的にペアにする方法は?

異なる長さのリストから順列を効率的にペアにする方法は?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-29 01:03:02520ブラウズ

How to Efficiently Pair Permutations from Lists of Disparate Lengths?

異なるリストから順列を効率的にペアリングする

目的は、ペアリングの数を基準にして、2 つのリストから要素の一意の組み合わせを生成することです。短い方のリストの長さ。この概念を説明してみましょう:

2 つのリストを考えてみましょう:

names = ['a', 'b']
numbers = [1, 2]

望ましい出力は次のようになります:

[('a', 1), ('b', 2)]
[('b', 1), ('a', 2)]

これを達成するには、Python の機能を利用できます。 itertools.製品。その仕組みは次のとおりです:

<code class="python">from itertools import product

a = ['foo', 'melon']
b = [True, False]
c = list(product(a, b))</code>

積を利用すると、可能なすべてのペアの組み合わせが得られます:

[('foo', True), ('foo', False), ('melon', True), ('melon', False)]

一方のリストが他方のリストより長いシナリオ (例: 名前に 3 つのリストがある)要素は 2 つしかありませんが、数値には 2 つしかありません)、順列は短いリストに基づいて計算されます:

names = ['a', 'b', 'c']
numbers = [1, 2]

期待される出力:

[('a', 1), ('b', 2)]
[('b', 1), ('a', 2)]
[('a', 1), ('c', 2)]
[('c', 1), ('a', 2)]
[('b', 1), ('c', 2)]
[('c', 1), ('b', 2)]

このアプローチにより、必要なすべての可能な組み合わせを確実に取得できます。入力リストの相対的な長さに関係なく、特定のユースケースに合わせて使用​​できます。

以上が異なる長さのリストから順列を効率的にペアにする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。