#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. Аналогично и с другими числами.
Комментариев нет:
Отправить комментарий