如何基于两个元素自动生成含三个元素的排列列表?
解决方案:生成允许重复元素的排列列表
你用itertools.permutations得不到结果的原因很明确:这个函数是从输入集合中不重复选取k个元素进行排列的。你的集合只有2个元素,要选3个的话自然没有符合条件的组合,所以返回空列表。
要生成允许重复使用元素的长度为3的排列列表,应该用itertools.product——它会生成输入可迭代对象的笛卡尔积,正好满足你重复使用元素的需求。
示例代码如下:
import itertools # 建议用列表代替集合,保证元素顺序可控 E = ['M', 'F'] # repeat参数指定生成的组合长度 permute_k = [''.join(item) for item in itertools.product(E, repeat=3)] print(permute_k)
这段代码会输出:
['MMM', 'MMF', 'MFM', 'MFF', 'FMM', 'FMF', 'FFM', 'FFF']
如果坚持用集合{'M', 'F'}也能运行,但集合是无序的,生成的结果顺序可能和预期有出入,换成列表能让输出顺序更符合直觉。
内容的提问来源于stack exchange,提问作者phuc
相关产品推荐
相关产品推荐

