与替代品组合 [英] Combinations with replacements
问题描述
无论如何,我知道如何生成集合的组合,而这是Python(我用的)内置的。但是如何生成带有替换的组合?
假设我有一个包含两个相同元素的集合,例如 AABCDE 。 p>
三个项目的组合可能是:
AAB
ABC
CDE
但是,该程序将计算 ABC 两次-使用第一个A时一次,使用第二个A时第二次。
生成没有重复项的此类组合的好方法是什么? / p>
谢谢。
>>>导入itertools
>> [ .join(x)for x in(itertools.combinations(set( AABCDE),3))]
['ACB','ACE','ACD','ABE','ABD ','AED','CBE','CBD','CED','BED']
>>
从您的其他评论中,我想我误会了您的要求。
>>导入itertools
>> set(。join(x)for x in(itertools.combinations( AABCDE,3)))
set(['AAE','AAD','ABC','ABD','ABE ','AAC','AAB','BCD','BCE','ACD','CDE','ACE','ADE','BDE'])
I know how to generate combinations of a set and that's a builtin in Python (what I use), anyway. But how to generate combinations with replacements?
Suppose I have a set with, say, two identical elements - for example, AABCDE.
Combinations of 3 items could be:
"AAB"
"ABC"
"CDE"
However, the program would count ABC twice - once when using the first A, and the second one using the second A.
What is a good way to generate such combinations without duplicates?
Thanks.
>>> import itertools
>>> ["".join(x) for x in (itertools.combinations(set("AABCDE"),3))]
['ACB', 'ACE', 'ACD', 'ABE', 'ABD', 'AED', 'CBE', 'CBD', 'CED', 'BED']
>>>
From your other comments, I think I misunderstood what you are asking.
>>> import itertools
>>> set("".join(x) for x in (itertools.combinations("AABCDE",3)))
set(['AAE', 'AAD', 'ABC', 'ABD', 'ABE', 'AAC', 'AAB', 'BCD', 'BCE', 'ACD', 'CDE', 'ACE', 'ADE', 'BDE'])
这篇关于与替代品组合的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!