Вы можете генерировать случайный вывод при сохранении данных без избыточности следующим образом:
- Сначала создайте список
permutations
, который в основном является продуктом списков, подлежащих перестановке.
permutations = list(itertools.product(*Statement))
## Example - [('I Like', 'Coffee', 'on the 4th of July'), ('I Like', 'Coffee', 'on April Fools'), ('I Like', 'Coffee', 'during Autumn'), ('I Like', 'Coffee', 'on Christmas')]
Выберите элементы из
permutations
путем случайного выбора индекса и его печати.
num = int(random.random() * total_elements)
print '{} {} {}'.format(permutations[num][0], permutations[num][1], permutations[num][2])
Далее мы удаляем элемент из списка
permutations
, чтобы избежать избыточности.
del permutations[num]
Полный код:
import itertools, random
Saying = ["I Like"]
Food = ['Coffee', 'Pineapples', 'Avocado', 'Bacon']
Holiday = ['on the 4th of July', 'on April Fools', 'during Autumn', 'on Christmas']
Statements = [Saying, Food, Holiday]
permutations = list(itertools.product(*Statements))
random.seed()
total_elements = len(Saying) * len(Food) * len(Holiday)
while total_elements > 0:
num = int(random.random() * total_elements)
print '{} {} {}'.format(permutations[num][0], permutations[num][1], permutations[num][2])
del permutations[num]
total_elements = total_elements - 1