Python: перетасовывающий список, но сохраняющий некоторые элементы замороженными

У нас такая проблема:

Есть список элементов классаCAnswer (не нужно описывать класс), и мне нужно перетасовать его, но с одним ограничением - некоторые элементы списка имеютCAnswer.freeze установлен вTrueи эти элементы не должны быть перетасованы, но должны оставаться на своих первоначальных позициях. Так что давайте'скажем, для данного списка:

[a, b, c, d, e, f]

Где все элементы являются экземплярамиCAnswer, ноc.freeze == Trueи для другихfreeze == False, возможный результат может быть:

[e, a, c, f, b, d]

Таким образом, элемент с индексом 2 все еще находится на своей позиции.

Каков наилучший алгоритм для его достижения?

Заранее спасибо :)

Ответы на вопрос(5)

Ваш ответ на вопрос