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
Lepaskan: 2024-12-11 13:52:12
asal
360 orang telah melayarinya

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))
Salin selepas log masuk

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)]
Salin selepas log masuk

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))
Salin selepas log masuk

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!

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