Python: lista aleatória, mas mantendo alguns elementos congelados

Eu tenho esse problema:

Existe uma lista de elementos de classeCAnswer (não é necessário descrever a classe), e eu preciso embaralhá-lo, mas com uma restrição - alguns elementos da listaCAnswer.freeze definido comoTruee esses elementos não devem ser embaralhados, mas permanecem em suas posições originais. Então, digamos, para uma determinada lista:

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

Onde todos os elementos são instâncias deCAnswer, masc.freeze == Truee para outrosfreeze == False, o resultado possível poderia ser:

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

Então, o elemento com índice 2 ainda está em sua posição.

Qual é o melhor algoritmo para alcançá-lo?

Agradeço antecipadamente :)

questionAnswers(5)

yourAnswerToTheQuestion