如何使用此元组(“A”,“E”,“L”)并生成所有可能的单词而不重复这些字母?结果是3个单词只有一个字母,6个单词有两个字母,6个单词有3个字母。
我试过了:
def gererate(tuplo_letras):
return [i for i in itertools.permutations(tuplo_letras)]
def final(arg):
return generate(list(map(''.join, itertools.permutations(arg))))
答案 0 :(得分:1)
您可以使用itertools.permutations
并迭代您要覆盖的排列的所有长度。请注意permutations
有两个参数,即所需排列的可迭代和所需长度:
from itertools import permutations, chain
tpl = ("A", "E", "L")
[''.join(p) for p in chain(*(permutations(tpl, l+1) for l in range(len(tpl))))]
# ['A', 'E', 'L', 'AE', 'AL', 'EA', 'EL', 'LA', 'LE', 'AEL', 'ALE', 'EAL', 'ELA', 'LAE', 'LEA']
如果您需要将它们分组,您可以相应地嵌套理解:
[[''.join(p) for p in (permutations(tpl, l+1))] for l in range(len(tpl))]
# [['A', 'E', 'L'], ['AE', 'AL', 'EA', 'EL', 'LA', 'LE'], ['AEL', 'ALE', 'EAL', 'ELA', 'LAE', 'LEA']]