Для более общего решения вы можете обратиться к Генераторам Python .
При произвольной повторяемости входных данных (например, ваших четырех входных строк) следующий генератор будет генерировать бесконечноеитерируемый выбор из этого списка, без двух одинаковых элементов:
import random
def noncontiguous(inputs):
last = random.choice(inputs)
yield last
while True:
next = random.choice(inputs)
if next != last:
last = next
yield next
Затем вы можете использовать списки или базовый цикл for, чтобы получить подмножество из 16 элементов этой бесконечной последовательности:
>>> gen = noncontiguous(['a', 'b', 'c', 'd'])
>>> [gen.next() for i in range(16)]
['c', 'b', 'c', 'b', 'a', 'c', 'b', 'c', 'd', 'a', 'd', 'c', 'a', 'd', 'b', 'c']
Что еще интереснее, вы можете продолжать использовать один и тот же объект-генератор для создания нескольких несмежных элементов
>>> for i in range(8):
... gen.next()
...
'b'
'c'
'd'
'c'
'b'
'd'
'a'
'c'