аватар question@mail.ru · 01.01.1970 03:00

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

Есть код:

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

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

00000001000200030004000500060007000800090011001200130014001500160017001800190022002300240025

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

аватар answer@mail.ru · 01.01.1970 03:00

Потому что для вашей задачи вам нужно брать не combinations_with_replacement, а product:

import itertoolsfor i in itertools.product('0123456789', repeat=4):    print(''.join(i))

Комбинации в комбинаторике не учитывают порядка элементов. Поэтому набор тех же элементов будет считаться одной и той же комбинацией, даже если элементы в другом порядке. Ваш код один раз уже напечатал комбинацию из трёх нулей и одной единицы (0001), поэтому он не будет уже печатать другие варианты этой комбинации - 0010, 0100 и 1000. Аналогично и с другими числами.

Последние

Похожие