如何压扁itertools.product

时间:2018-03-23 17:25:19

标签: python tuples itertools flatten cartesian-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')]

有什么想法吗?

1 个答案:

答案 0 :(得分:7)

在列表理解中加入每个元组:

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