Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Memasangkan Permutasi dengan Cekap daripada Senarai Panjang Berbeza?

Bagaimana untuk Memasangkan Permutasi dengan Cekap daripada Senarai Panjang Berbeza?

Barbara Streisand
Barbara Streisandasal
2024-10-29 01:03:02665semak imbas

How to Efficiently Pair Permutations from Lists of Disparate Lengths?

Membuat Permutasi Secara Cekap daripada Senarai Berbeza

Matlamat anda ialah untuk menjana gabungan unik elemen daripada dua senarai, dengan bilangan gandingan dipandu oleh panjang senarai yang lebih pendek. Mari kita ilustrasikan konsep ini:

Pertimbangkan dua senarai:

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

Output yang diingini ialah:

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

Untuk mencapainya, anda boleh memanfaatkan kuasa Python itertools.product. Begini cara ia berfungsi:

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

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

Dengan menggunakan produk, anda memperoleh semua kemungkinan gabungan berpasangan:

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

Dalam senario di mana satu senarai lebih panjang daripada yang lain (mis., nama mempunyai tiga elemen manakala nombor hanya mempunyai dua), pilih atur masih akan dikira berdasarkan senarai yang lebih pendek:

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

Output yang dijangkakan:

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

Pendekatan ini memastikan anda memperoleh semua kemungkinan kombinasi yang diperlukan untuk kes penggunaan khusus anda, tanpa mengira panjang relatif senarai input.

Atas ialah kandungan terperinci Bagaimana untuk Memasangkan Permutasi dengan Cekap daripada Senarai Panjang Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn