如何使所有可能的组合都脱离字母,但并非所有字母都需要使用?

问题描述 投票:0回答:1

我正在用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

等谁能帮我吗?

python python-3.x list itertools iterable
1个回答
1
投票

您可以执行以下操作:

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的任何组合

© www.soinside.com 2019 - 2024. All rights reserved.