可能重复:
is there any best way to generate all possible three letters keywords
如何从字母L中枚举长度为K的所有字符串,其中L只是一个字符列表?例如。如果L = ['A', 'B', 'C']
和K = 2
,我想列举所有可用字母'A'
,'B'
,'C'
组成的长度为2的字符串。它们可以重复使用,因此'AA'
有效。
据我所知,这基本上是替换的排列。如果这是一个更正确的技术术语,请告诉我....它基本上所有K长度的字符串,您可以通过选择字母L中的任何字母,并可能重用字母,以一种敏感的方式顺序(因此AB
与BA
不相同。)是否有更明确的方式来说明这一点?
无论如何我相信解决方案是:
[ ''.join(x) for x in product(L, repeat=K) ]
但我对其他答案很感兴趣,尤其是天真的方法与快速的Pythonic方法,以及速度考虑的讨论。
答案 0 :(得分:1)
EDIT2:当然正确答案是产品,感谢评论
print [''.join(x) for x in product('ABC', repeat=3)]
打印27个元素
['AAA', 'AAB', 'AAC', 'ABA', 'ABB', 'ABC', 'ACA', 'ACB', 'ACC', 'BAA', 'BAB',
'BAC', 'BBA', 'BBB', 'BBC', 'BCA', 'BCB', 'BCC', 'CAA', 'CAB', 'CAC', 'CBA',
'CBB', 'CBC', 'CCA', 'CCB', 'CCC']
答案 1 :(得分:0)
您可以使用itertools
:
n = 3
itertools.product(*['abc']*n)
这可以为您提供27个元素。