Python: lista aleatoria, pero manteniendo algunos elementos congelados

Tengo un problema:

Hay una lista de elementos de clase.CAnswer (no es necesario describir la clase), y debo barajarla, pero con una restricción: algunos elementos de la lista tienenCAnswer.freeze ajustado aTrue, y esos elementos no se deben barajar, sino permanecer en sus posiciones originales. Entonces, digamos, para una lista dada:

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

Donde todos los elementos son instancias deCAnswer, peroc.freeze == Truey para otrosfreeze == False, el posible resultado podría ser:

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

Así que el elemento con índice 2 está todavía en su posición.

¿Cuál es el mejor algoritmo para lograrlo?

Gracias de antemano :)

Respuestas a la pregunta(5)

Su respuesta a la pregunta