Como randomizar a ordem dos elementos de uma lista e garantir que nenhum valor consecutivo seja igual?

Eu tenho uma lista python de strings, digamos:

elems = ["A", "B", "C", "D"]

Eu quero criar uma nova lista cujos elementos são cada elemento deelems repetiu um número fixo de vezes (digamos duas vezes), em uma ordem aleatória, mas certificando-se de que dois elementos consecutivos nunca tenham o mesmo valor.

Por exemplo,["D", "B", "A", "B", "D", "C", "A", "C"] é um bom resultado.["D", "B", "A", "B", "D", "C", "C", "A"] não é (C é repetido na 6ª e 7ª posição).

A idéia mais simples é provavelmente apenas:

ans = 2*elems
random.shuffle(ans)

e então algum código para cuidar das repetições, mas todas as soluções em que consigo pensar envolvem loops potencialmente infinitos. Existe uma maneira simples e confiável de fazer isso?

Obrigado.

questionAnswers(4)

yourAnswerToTheQuestion