3 回答
TA贡献1757条经验 获得超8个赞
只需这样做:
import itertools
match = 'ABBBC' #string of letter combinations to match.
permutations = itertools.permutations(match) #get all
all_combos = list({''.join(per) for per in permutations}) #use sets to remove duplicates
的值all_combos是所有可能组合的列表。
TA贡献1847条经验 获得超7个赞
避免重复的更好方法是使用@BillBell 在这里指出的正确工具:具有唯一值的排列。从本质上讲,我们正在处理的多集,并使用sympy我们可以得到想要的结果:
from sympy.utilities.iterables import multiset_permutations
for item in multiset_permutations(listOfCharacters):
print(''.join(item))
ABBBC
ABBCB
ABCBB
ACBBB
BABBC
BABCB
BACBB
BBABC
BBACB
BBBAC
BBBCA
BBCAB
BBCBA
BCABB
BCBAB
BCBBA
CABBB
CBABB
CBBAB
CBBBA
TA贡献1852条经验 获得超7个赞
更新: 所以这是我最终做的:
A = 1
B = 3
C = 1
listOfCharacters = ["A"]*A + ["B"]*B + ["C"]*C
>>> ['A', 'B', 'B', 'B', 'C']
random.seed(1)
random.shuffle(listOfCharacters)
listOfCharacters = ''.join(listOfCharacters)
>>>'BBCAB'
然后我只是用 for 循环遍历 shuffle。
添加回答
举报