Есть ли функция для создания списка уникальных элементов в уникальном индексе с использованием Python? - PullRequest
1 голос
/ 01 ноября 2019

Есть ли способ создать новый набор списков элементов, в котором каждый элемент исходного списка имеет уникальный индекс в следующих списках?

orginal_list=['r', 'g', 'b', 'y']

output: ['y', 'g', 'r', 'b'],['g', 'y', 'b', 'r'],['r', 'b', 'y', 'g'],['b', 'r', 'g', 'y']
or
output: ['y', 'r', 'b', 'g'],['g', 'y', 'r', 'b'],['r', 'b', 'g', 'y'],['b', 'g', 'y', 'r']
or 
...

Я пытался использовать iterators.permutations, но это не соответствует требованию уникального индекса.

1 Ответ

1 голос
/ 01 ноября 2019

Проще всего было бы повернуть список. Вот простая функция генератора, производящая все такие вращения:

def rots(lst):
    for i in range(len(lst)):
        yield lst[i:] + lst[:i]

>>> list(rots(['r', 'g', 'b', 'y']))
[['r', 'g', 'b', 'y'], 
 ['g', 'b', 'y', 'r'], 
 ['b', 'y', 'r', 'g'], 
 ['y', 'r', 'g', 'b']]

Вращение гарантирует, что каждый элемент фактически встречается в каждом индексе ровно один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...