我正在用Python创建一个项目,它涉及到一个函数,该函数从作为参数给定的字母中返回所有可能的组合,但并非必须使用所有字母。这是我当前的功能:
from itertools import product
def algorithm(letters):
possible = [''.join(combination) for combination in product(letters, repeat=len(letters))]
return possible
print(algorithm(['a','b','c','d','e']))
但是它只返回所有给定字母的组合。它不会返回如下组合:
abc
cba
de
ad
等谁能帮我吗?
您可以执行以下操作:
import itertools
def generate(vals):
return ("".join(x) for x in itertools.chain.from_iterable(itertools.permutations(vals,i+1) for i in range(0,len(vals))))
print(list(generate("".join(['a','b','c','d','e']))))
这将生成从长度1到5的任何组合