Страницы

Поиск по вопросам

среда, 4 марта 2020 г.

Как правильно получить все комбинации чисел в Python

#python #комбинаторика


Есть код:

import itertools

for i in itertools.combinations_with_replacement('0123456789', 4):
    print(''.join(i))


Мне нужно получить все комбинации цифр по 4 с повторениями.
Часть вывода программы:

0000
0001
0002
0003
0004
0005
0006
0007
0008
0009
0011
0012
0013
0014
0015
0016
0017
0018
0019
0022
0023
0024
0025


Скажите, почему после 0009 идет 0011, а не 0010 ?
Также и с 0022.
    


Ответы

Ответ 1



Потому что для вашей задачи вам нужно брать не combinations_with_replacement, а product: import itertools for i in itertools.product('0123456789', repeat=4): print(''.join(i)) Комбинации в комбинаторике не учитывают порядка элементов. Поэтому набор тех же элементов будет считаться одной и той же комбинацией, даже если элементы в другом порядке. Ваш код один раз уже напечатал комбинацию из трёх нулей и одной единицы (0001), поэтому он не будет уже печатать другие варианты этой комбинации - 0010, 0100 и 1000. Аналогично и с другими числами.

Комментариев нет:

Отправить комментарий