用Python列举字母表中长度为K的所有可能字符串
可能重复的问题:
有没有什么好的方法来生成所有可能的三字母关键词
我想知道怎么从一个字符列表中列出所有长度为K的字符串。比如,如果 L = ['A', 'B', 'C']
而 K = 2
,我想列出所有由字母 'A'
、'B'
和 'C'
组成的长度为2的字符串。字母可以重复使用,所以 'AA'
是有效的。
从我理解的角度来看,这其实就是带替换的排列。如果有更准确的术语,请告诉我……本质上就是从字母表L中选择任意字母,可能会重复使用字母,生成所有长度为K的字符串,并且这个过程是有顺序的(所以 AB
和 BA
是不同的)。有没有更清晰的说法呢?
无论如何,我认为解决方案是:
[ ''.join(x) for x in product(L, repeat=K) ]
但我也对其他答案感兴趣,特别是简单的方法和快速的Python方法,以及关于速度的讨论。
2 个回答
0
你可以使用 itertools
这个工具:
n = 3
itertools.product(*['abc']*n)
这样你就能得到你预期的27个元素。
1
这是Python文档的一部分
编辑2:当然,正确的答案是乘积,感谢评论
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']