用Python列举字母表中长度为K的所有可能字符串

2 投票
2 回答
5013 浏览
提问于 2025-04-17 03:10

可能重复的问题:
有没有什么好的方法来生成所有可能的三字母关键词

我想知道怎么从一个字符列表中列出所有长度为K的字符串。比如,如果 L = ['A', 'B', 'C']K = 2,我想列出所有由字母 'A''B''C' 组成的长度为2的字符串。字母可以重复使用,所以 'AA' 是有效的。

从我理解的角度来看,这其实就是带替换的排列。如果有更准确的术语,请告诉我……本质上就是从字母表L中选择任意字母,可能会重复使用字母,生成所有长度为K的字符串,并且这个过程是有顺序的(所以 ABBA 是不同的)。有没有更清晰的说法呢?

无论如何,我认为解决方案是:

[ ''.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']

@agf之前给出了正确的答案

撰写回答