Penjanaan Powerset: Pendekatan Elegan
Soalan:
Memandangkan satu set, bagaimana kita boleh mengira dengan cekap set kuasa, yang merangkumi semua kemungkinan subset asal set?
Jawapan:
Modul itertools serba boleh Python menawarkan penyelesaian yang luar biasa untuk penjanaan set kuasa, seperti yang ditunjukkan di bawah:
from itertools import chain, combinations def powerset(iterable): s = list(iterable) return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
Penjelasan:
Output:
Apabila kita menggunakan fungsi set kuasa ini kepada boleh lelar yang mengandungi unsur "abcd", ia menghasilkan mengikuti set kuasa:
[(), ('a',), ('b',), ('c',), ('d',), ('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd'), ('a', 'b', 'c'), ('a', 'b', 'd'), ('a', 'c', 'd'), ('b', 'c', 'd'), ('a', 'b', 'c', 'd')]
Penyesuaian:
Jika tuple kosong awal dalam output tidak diingini, ubah sahaja pernyataan julat untuk menggunakan julat 1 kepada panjang boleh ulang tambah 1, dengan berkesan mengecualikan gabungan kosong daripada set kuasa.
Atas ialah kandungan terperinci Bagaimanakah Kita Boleh Menjana Set Kuasa Set Diberi dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!