Как генерировать перестановки списка без «обратных дубликатов» в Python, используя генераторы

Это связано с вопросомКак сгенерировать все перестановки списка в Python

Как генерировать все перестановки, которыесоответствовать следующим критериям: если две перестановки противоположны друг другу (то есть [1,2,3,4] и [4,3,2,1]), они считаются равными, и только одна из них должна быть в конечном результате.

Пример:

permutations_without_duplicates ([1,2,3])
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]

Я перестановки списков, которые содержат уникальные целые числа.

Количество полученных перестановок будет большим, поэтому я бы хотел использовать генераторы Python, если это возможно.

Редактировать: я хотел бы не хранить список всех перестановок в памяти, если это возможно.