Генерация перестановок списка с повторяющимися элементами

В Python довольно просто создать все перестановки списка с помощью модуля itertools. У меня есть ситуация, когда в списке, который я использую, всего два символа (например, «1122»). Я хочу сгенерировать все уникальные перестановки.

Для строки '1122', существует 6 уникальных перестановок (1122, 1212, 1221 и т.д.), но itertools.permutations даст 24 элемента. Просто записать только уникальные перестановки, но для их сбора потребуется гораздо больше времени, чем необходимо, поскольку учитываются все 720 элементов.

Есть ли функция или модуль, который учитывает повторяющиеся элементы при генерации перестановок, поэтому у меня нет написать свой собственный?

19
задан JoshD 22 November 2010 в 20:59
поделиться