与替代品组合 [英] Combinations with replacements

查看:54
本文介绍了与替代品组合的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

无论如何,我知道如何生成集合的组合,而这是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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆