簡體   English   中英

在python2.7中使用itertools的字母組合

[英]combinations of letters using itertools in python2.7

我正在嘗試使用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')]我應該如何實現所需的解決方案?

您可以連接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)連接從可迭代對象檢索的所有字符串:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM