Mencari Semua Subset Set: Powerset
Memandangkan set elemen, mencari semua subsetnya boleh menjadi tugas pengaturcaraan biasa . Ini dikenali sebagai membina set kuasa set.
Penyelesaian Menggunakan itertools
Modul Python itertools menyediakan penyelesaian yang elegan untuk mengira set kuasa menggunakan kombinasi:
from itertools import chain, combinations def powerset(iterable): "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)" s = list(iterable) return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
Bagaimana ia Berfungsi
Fungsi ini menjana semua gabungan elemen dalam set, daripada set kosong kepada set penuh. Ia mencapai ini dengan mengulang julat saiz subset yang mungkin (0 kepada bilangan elemen dalam set) dan mencipta gabungan elemen untuk setiap saiz.
Contoh
Sebagai contoh, set kuasa set {0, 1, 2, 3} ialah:
list(powerset("abcd")) [(), ('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 anda ingin mengecualikan subset kosong daripada set kuasa, anda boleh mengubah suai pernyataan julat dalam fungsi set kuasa kepada julat(1 , len(s) 1):
def powerset(iterable): s = list(iterable) return chain.from_iterable(combinations(s, r) for r in range(1, len(s)+1))
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Semua Subset (Powerset) Set Diberi dengan Cekap dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!