Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Menjana Semua Subset Senarai yang Berkemungkinan dengan Cekap dalam Python?

Bagaimanakah Saya Boleh Menjana Semua Subset Senarai yang Berkemungkinan dengan Cekap dalam Python?

Susan Sarandon
Lepaskan: 2024-12-25 10:41:15
asal
151 orang telah melayarinya

How Can I Efficiently Generate All Possible Subsets of a List in Python?

Menjana Gabungan Lengkap: Daripada Subset 1 Elemen kepada Semua Kemungkinan

Masalah menjana semua kemungkinan gabungan elemen dalam senarai telah membingungkan ramai pengaturcara. Dengan kaedah seperti itertools.combinations(), anda boleh mengambil subset dengan panjang tertentu dengan mudah. Tetapi bagaimana jika anda ingin mengulangi semua saiz subset yang mungkin, daripada gabungan 1 elemen kepada keseluruhan set?

Memang, perwakilan binari integer menawarkan satu pendekatan, tetapi mari kita cari kaedah yang lebih cekap.

Memperkenalkan fungsi itertools.chain() yang berkuasa, yang menggabungkan dengan lancar satu siri iterator menjadi tunggal, lelaran lanjutan. Ini membolehkan kami menjana rangkaian penjana yang menghasilkan subset dengan semua panjang yang mungkin.

Berikut ialah pelaksanaan ringkas menggunakan itertools.chain() dan kombinasi():

from itertools import chain, combinations

def all_subsets(ss):
    return chain(*map(lambda x: combinations(ss, x), range(0, len(ss)+1)))
Salin selepas log masuk

Tidak perlu bekerja keras dengan pengindeksan yang rumit atau penyahkodan binari. Hanya gunakan all_subsets() pada senarai anda dan ia akan dengan mudah mengembalikan rantai tupel yang mewakili semua gabungan elemen yang mungkin.

Sebagai contoh, pertimbangkan senarai [1, 2, 3]. Kod kami menghasilkan:

()
(1,)
(2,)
(3,)
(1, 2)
(1, 3)
(2, 3)
(1, 2, 3)
Salin selepas log masuk

Meliputi semua asas daripada subset kosong kepada set lengkap, pendekatan serba boleh ini menyelesaikan masalah menyenaraikan semua kemungkinan gabungan elemen senarai.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Semua Subset Senarai yang Berkemungkinan dengan Cekap dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan