如何在Python中获得几个字母的所有组合?

时间:2015-09-25 19:29:36

标签: python-3.x

如何在不使用itertools的情况下获得python 3中几个字母的所有组合?例如,我们有a,b,c,我们如何获得所有可能的组合,包括a,b,c,ab,ba,ac,ca,bc,cb,abc,acb,bac,bca,cab,cba

1 个答案:

答案 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模块,可以使用此功能。