您可以通过以下方式在保持非冗余数据的同时生成随机输出:
- 首先创建一个列表
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