我正在尝试使用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')]
我应该如何实现我想要的解决方案?
答案 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"