Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menjana Semua Subset Set Menggunakan `itertools.combinations` Python?

Bagaimana untuk Menjana Semua Subset Set Menggunakan `itertools.combinations` Python?

Linda Hamilton
Linda Hamiltonasal
2024-12-11 13:52:12420semak imbas

How to Generate All Subsets of a Set Using Python's `itertools.combinations`?

Cara Menjana Semua Subset Set Menggunakan itertools.combinations

Dalam Python, modul itertools.combinations menyediakan kaedah yang mudah dan cekap untuk menjana set kuasa set. Begini cara anda boleh melakukannya:

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))

Sebagai contoh, untuk mencari semua subset set {0, 1, 2, 3}, anda akan menggunakan kod berikut:

>>> list(powerset([0, 1, 2, 3]))
[(), (0,), (1,), (2,), (3,), (0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3), (0, 1, 2), (0, 1, 3), (0, 2, 3), (1, 2, 3), (0, 1, 2, 3)]

Perhatikan bahawa tupel kosong () disertakan dalam set kuasa, kerana ia mewakili subset kosong.

Jika anda memilih untuk tidak mempunyai tuple kosong dalam keputusan, anda boleh mengubah suai julat dalam gelung gabungan seperti berikut:

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(1, len(s)+1))

Ini akan mengecualikan tupel kosong daripada subset yang dikembalikan.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Semua Subset Set Menggunakan `itertools.combinations` Python?. 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