Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah saya boleh menjana semua kombinasi yang mungkin daripada senarai senarai dalam Python dengan cekap?

Bagaimanakah saya boleh menjana semua kombinasi yang mungkin daripada senarai senarai dalam Python dengan cekap?

DDD
DDDasal
2024-12-10 11:58:14968semak imbas

How can I efficiently generate all possible combinations from a list of lists in Python?

Gabungan Senarai Senarai dalam Python

Dalam pengaturcaraan, menggabungkan elemen daripada berbilang senarai adalah tugas biasa. Soalan ini menumpukan pada penjanaan semua kemungkinan kombinasi item daripada senarai senarai, tanpa mengira saiznya.

Untuk mencapai matlamat ini, pustaka Python menawarkan penyelesaian yang bijak menggunakan fungsi itertools.product. Fungsi ini mengambil bilangan pembolehubah iterable sebagai input dan mengembalikan produk Cartesian, yang pada asasnya menghasilkan semua kemungkinan gabungan elemen daripada setiap lelaran.

Sebagai contoh, mari kita pertimbangkan senarai input senarai: [[1,2] ,3],[4,5,6],[7,8,9,10]].

import itertools
a = [[1,2,3],[4,5,6],[7,8,9,10]]
combinations = list(itertools.product(*a))

Senarai gabungan yang terhasil akan mengandungi semua kemungkinan gabungan elemen daripada senarai input:

[(1, 4, 7), (1, 4, 8), (1, 4, 9), (1, 4, 10), (1, 5, 7), (1, 5, 8), (1, 5, 9), (1, 5, 10),
(1, 6, 7), (1, 6, 8), (1, 6, 9), (1, 6, 10), (2, 4, 7), (2, 4, 8), (2, 4, 9), (2, 4, 10),
(2, 5, 7), (2, 5, 8), (2, 5, 9), (2, 5, 10), (2, 6, 7), (2, 6, 8), (2, 6, 9), (2, 6, 10),
(3, 4, 7), (3, 4, 8), (3, 4, 9), (3, 4, 10), (3, 5, 7), (3, 5, 8), (3, 5, 9), (3, 5, 10),
(3, 6, 7), (3, 6, 8), (3, 6, 9), (3, 6, 10)]

Melalui kuasa itertools.product, menjana kombinasi daripada senarai senarai menjadi operasi ringkas dan elegan dalam Python.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menjana semua kombinasi yang mungkin daripada senarai senarai dalam Python dengan cekap?. 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