python комбинация с заменой не работает должным образом - PullRequest
1 голос
/ 30 января 2020

Я хотел бы создать все комбинации определенной длины, используя набор разрешенных символов с заменой:

Я думал, что itertools.combinations_with_replacement - это то, что мне нужно. Вот что я сделал:

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

И все же количество комбинаций, полученных таким образом, равно 15. Но оно должно быть 25 (5 ^ 2). Что происходит?

РЕДАКТИРОВАТЬ:

Я заменил combinations_with_replacement на permutations, как предложено @Michael Bianconi, но это тоже не сработало - я получил результирующий набор из 20, а не 25.

Ответы [ 2 ]

2 голосов
/ 30 января 2020

Возможно, вы ищете продукт:

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

25

Строки повторяются в Python, поэтому вы можете использовать:

import itertools
for result in itertools.product('01869', repeat=2)):
    print(result)
2 голосов
/ 30 января 2020
00, 01, 08, 06, 09
11, 18, 16, 19
88, 86, 89
66, 69
99

Существует 15 возможных комбинаций.

...