Anda sedang mencari kaedah untuk menjana semua kemungkinan gabungan 2^N daripada senarai 15 elemen, menampung gabungan mana-mana panjang sambil mengekalkan susunan asal. Walaupun pendekatan anda yang melibatkan perwakilan binari ialah pilihan yang berdaya maju, mari kita terokai penyelesaian yang lebih komprehensif.
Daripada bergantung pada perwakilan binari, pertimbangkan untuk menggunakan fungsi itertools.combinations() daripada perpustakaan standard Python. Fungsi ini menjana jujukan semua kombinasi panjang tertentu daripada lelaran tertentu. Dengan mempelbagaikan parameter panjang, anda boleh mendapatkan kombinasi mana-mana saiz yang dikehendaki.
Kod Python berikut menunjukkan pendekatan ini:
import itertools stuff = [1, 2, 3] # Loop through all possible lengths for L in range(len(stuff) + 1): # Generate combinations of length L for subset in itertools.combinations(stuff, L): print(subset)
Kod ini akan menjana kesemua 32,768 kemungkinan gabungan elemen dalam senarai bahan, tanpa mengira panjangnya.
Sebagai alternatif, untuk penyelesaian yang lebih diperkemas, anda boleh menggunakan rantai() dan combinations() berfungsi untuk menjana satu jujukan yang mengandungi semua gabungan semua panjang yang mungkin:
import itertools from itertools import chain, combinations def all_subsets(ss): return chain(*map(lambda x: combinations(ss, x), range(0, len(ss)+1))) for subset in all_subsets(stuff): print(subset)
Kod ini mencapai hasil yang sama tetapi dengan cara yang lebih ringkas dan boleh dikatakan elegan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Semua Kemungkinan Gabungan Elemen Senarai dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!