如何在不使用itertools的情况下获得python 3中几个字母的所有组合?例如,我们有a,b,c,我们如何获得所有可能的组合,包括a,b,c,ab,ba,ac,ca,bc,cb,abc,acb,bac,bca,cab,cba
?
答案 0 :(得分:1)
itertools.combinations
等于以下函数,这是计算组合的pyhtoinic方法:
def combinations(iterable, r):
# combinations('ABCD', 2) --> AB AC AD BC BD CD
# combinations(range(4), 3) --> 012 013 023 123
pool = tuple(iterable)
n = len(pool)
if r > n:
return
indices = list(range(r))
yield tuple(pool[i] for i in indices)
while True:
for i in reversed(range(r)):
if indices[i] != i + n - r:
break
else:
return
indices[i] += 1
for j in range(i+1, r):
indices[j] = indices[j-1] + 1
yield tuple(pool[i] for i in indices)
如果您不想导入itertools
模块,可以使用此功能。