Saya ingin menghasilkan semua kombinasi dengan panjang tertentu dengan menggunakan satu set karakter yang diizinkan dengan penggantian:

Saya pikir itertools.combinations_with_replacement adalah yang saya butuhkan. Jadi inilah yang saya lakukan:

from itertools import combinations_with_replacement
allowed = ['0', '1', '8', '6', '9']
comb = list(combinations_with_replacement(allowed,2))

Namun jumlah kombinasi yang dihasilkan adalah 15. Tapi seharusnya 25 (5^2). Apa yang sedang terjadi?

EDIT:

Saya mengganti combinations_with_replacement dengan permutations seperti yang disarankan oleh @Michael Bianconi tetapi tidak berhasil juga - saya mendapatkan set hasil 20, bukan 25.

1
Nick 30 Januari 2020, 21:57

2 jawaban

Jawaban Terbaik

Anda mungkin mencari produk:

import itertools
allowed = ['0', '1', '8', '6', '9']
product = list(itertools.product(allowed, repeat=2))
print(len(product))

25

String dapat diubah dengan Python, jadi Anda dapat menggunakan:

import itertools
for result in itertools.product('01869', repeat=2)):
    print(result)
2
Infinity 30 Januari 2020, 19:03
00, 01, 08, 06, 09
11, 18, 16, 19
88, 86, 89
66, 69
99

Ada 15 kemungkinan kombinasi.

2
Michael Bianconi 30 Januari 2020, 19:03