我有一套五个字母A..E。我希望将它们组合成3组而不重复字母,但我对于从哪里开始一无所知。
答案 0 :(得分:1)
假设你有:
s = set('ABCDE')
如果您只需要一次提取,请使用random.sample:
from random import sample
print sample(s, 3)
# ['E', 'C', 'A']
如果您想要所有组合使用itertools.combinations:
from itertools import combinations
print list(combinations(s, 3))
# [('A', 'C', 'B'), ('A', 'C', 'E'), ('A', 'C', 'D'), ('A', 'B', 'E'), ('A', 'B', 'D'), ('A', 'E', 'D'), ('C', 'B', 'E'), ('C', 'B', 'D'), ('C', 'E', 'D'), ('B', 'E', 'D')]
如果您想要所有组合使用itertools.permutations:
from itertools import permutations
print list(permutations(s, 3))
# [('A', 'C', 'B'), ('A', 'C', 'E'), ('A', 'C', 'D'), ('A', 'B', 'C'), ('A', 'B', 'E'), ('A', 'B', 'D'), ('A', 'E', 'C'), ('A', 'E', 'B'), ('A', 'E', 'D'), ('A', 'D', 'C'), ('A', 'D', 'B'), ('A', 'D', 'E'), ('C', 'A', 'B'), ('C', 'A', 'E'), ('C', 'A', 'D'), ('C', 'B', 'A'), ('C', 'B', 'E'), ('C', 'B', 'D'), ('C', 'E', 'A'), ('C', 'E', 'B'), ('C', 'E', 'D'), ('C', 'D', 'A'), ('C', 'D', 'B'), ('C', 'D', 'E'), ('B', 'A', 'C'), ('B', 'A', 'E'), ('B', 'A', 'D'), ('B', 'C', 'A'), ('B', 'C', 'E'), ('B', 'C', 'D'), ('B', 'E', 'A'), ('B', 'E', 'C'), ('B', 'E', 'D'), ('B', 'D', 'A'), ('B', 'D', 'C'), ('B', 'D', 'E'), ('E', 'A', 'C'), ('E', 'A', 'B'), ('E', 'A', 'D'), ('E', 'C', 'A'), ('E', 'C', 'B'), ('E', 'C', 'D'), ('E', 'B', 'A'), ('E', 'B', 'C'), ('E', 'B', 'D'), ('E', 'D', 'A'), ('E', 'D', 'C'), ('E', 'D', 'B'), ('D', 'A', 'C'), ('D', 'A', 'B'), ('D', 'A', 'E'), ('D', 'C', 'A'), ('D', 'C', 'B'), ('D', 'C', 'E'), ('D', 'B', 'A'), ('D', 'B', 'C'), ('D', 'B', 'E'), ('D', 'E', 'A'), ('D', 'E', 'C'), ('D', 'E', 'B')]
在您的问题中更具体,并查看itertools页面,它有所有答案。
答案 1 :(得分:1)
是的,请查看itertools.combinations