python2.7中使用itertools的字母组合

时间:2017-06-30 19:06:32

标签: python python-2.7 itertools

我正在尝试使用itertools.combinations返回字母表中所有字母的组合,长度最多为n。

def string_combinations(alphabet, n):
    '''
    Parameters
    ----------
    alphabet : {str}
    n : {int}

    Returns
    -------
    list : {list} of {str}    

    Example
    -------
    >>> string_combinations('abc', 2)
    ['a', 'b', 'c', 'ab', 'ac', 'bc']
    '''

到目前为止我已经

return [str(x) for i in range(1,n+1) for x in itertools.combinations(alphabet,i)]

但是itertools.combinations会返回列表中的元组[('a',), ('b',), ('c',), ('a', 'b'), ('a', 'c'), ('b', 'c')]我应该如何实现我想要的解决方案?

1 个答案:

答案 0 :(得分:1)

您可以连接itertools返回的所有字符串:

result = map("".join, (comb for i in range(1, n+1) for comb in itertools.combinations(alphabet, i)))

这相当于在列表理解中调用"".join

result = ["".join(comb) for ...]

"".join(iterable)连接从iterable中检索到的所有字符串:

"".join(('a', 'b', 'c')) == "abc"