Python: перетасовывающий список, но сохраняющий некоторые элементы замороженными
У меня такая проблема:
Есть список элементов классаCAnswer
(не нужно описывать класс), и мне нужно перетасовать его, но с одним ограничением - некоторые элементы списка имеютCAnswer.freeze
установлен вTrue
и эти элементы не должны быть перетасованы, но должны оставаться на своих первоначальных позициях Итак, скажем, для данного списка:
[a, b, c, d, e, f]
Где все элементы являются экземплярамиCAnswer
, ноc.freeze == True
и для другихfreeze == False
, возможный результат может быть:
[e, a, c, f, b, d]
Таким образом, элемент с индексом 2 все еще находится на своей позиции.
Каков наилучший алгоритм для его достижения?
Заранее спасибо :)