在Python中枚举字母表中所有可能的长度为K的字符串
可能的重复:
有没有最好的方法来生成所有可能的三个字母关键字
如何从字母表 L 中枚举长度为 K 的所有字符串,其中 L 只是一个字符列表?例如,如果 L = ['A', 'B', 'C']
和 K = 2
,我想枚举长度为 2 的所有可能的字符串由字母'A'
、'B'
、'C'
组成。它们可以重复使用,因此 'AA'
有效。
据我了解,这本质上是带有替换的排列。如果对此有更正确的技术术语,请告诉我......它本质上是所有长度为 K 的字符串,您可以通过从字母表 L 中选择任何字母,并可能以敏感的方式重复使用字母来制作顺序(因此根据此 AB
与 BA
不同。)是否有更清晰的方法来说明这一点?
无论如何,我相信解决方案是:
[ ''.join(x) for x in product(L, repeat=K) ]
但我对这个问题的其他答案感兴趣,特别是。简单的方法与快速的 Python 方法,以及速度考虑因素的讨论。
Possible Duplicate:
is there any best way to generate all possible three letters keywords
how can I enumerate all strings of length K from an alphabet L, where L is simply a list of characters? E.g. if L = ['A', 'B', 'C']
and K = 2
, I'd like to enumerate all possible strings of length 2 that can be made up with the letters 'A'
, 'B'
, 'C'
. They can be reused, so 'AA'
is valid.
This is essentially permutations with replacement, as far as I understand. if theres a more correct technical term for this, please let me know.... its essentially all strings of length K that you can make by choosing ANY letter from the alphabet L, and possibly reusing letters, in a way that is sensitive to order (so AB
is NOT identical to BA
according to this.) is there a clearer way to state this?
in any case i believe the solution is:
[ ''.join(x) for x in product(L, repeat=K) ]
but i am interested in other answers to this, esp. naive approaches versus fast Pythonic ones, and discussions of speed considerations.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是 Python 文档 的一部分
编辑2:当然是正确的答案是产品,感谢您的评论
打印 27 个元素
@agf 给出了正确的答案之前
this is part of the Python Documentation
EDIT2: of course the right answer is the product, thanks for the comment
prints 27 elements
@agf gave the right answer before
您可以使用
itertools
:这会为您提供预期的 27 个元素。
You can use
itertools
:This gives you 27 elements as you expected.