python – 如何展平itertools.product

我有一个三个集的itertools.product,如下所示:

输入:

t1 = set(['R'])
t2 = set(['Y'])
t3 = set(['A', 'C', 'H', 'M', 'T', 'W', 'Y'])

list(itertools.product(t1, t2, t3))

输出:

[('R', 'Y', 'A'), ('R', 'Y', 'C'), ('R', 'Y', 'H'), ('R', 'Y', 'M'), ('R', 'Y', 'T'), ('R', 'Y', 'W'), ('R', 'Y', 'Y')]

但是,如果我尝试压扁它,它会列出一个长列表,但我想要的是:

[('RYA'), ('RYC'), ('RYH'), ('RYM'), ('RYT'), ('RYW'), ('RYY')]

有什么想法吗?

最佳答案 加入列表理解中的每个元组:

>>> [''.join(p) for p in itertools.product(t1, t2, t3)]
['RYH', 'RYA', 'RYC', 'RYY', 'RYT', 'RYM', 'RYW']
点赞