Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Python中的字母表中枚举长度为K的所有可能字符串_Python_Combinatorics - Fatal编程技术网

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

从Python中的字母表中枚举长度为K的所有可能字符串,python,combinatorics,Python,Combinatorics,可能重复: 如何从字母表L中枚举长度为K的所有字符串,其中L只是一个字符列表?例如,如果L=['A'、'B'、'C']和K=2,我想列举所有可能的长度为2的字符串,它们可以由字母'A','B','C'组成。它们可以重用,因此'AA'是有效的 据我所知,这本质上是置换。如果有一个更正确的技术术语,请让我知道。。。。它基本上都是长度为K的字符串,你可以从字母表L中选择任何字母,并可能以对顺序敏感的方式重复使用字母(因此根据这一点,AB与BA不同)。有没有更清晰的方法来说明这一点 无论如何,我认为解

可能重复:

如何从字母表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方法,以及关于速度考虑的讨论。

这是本文的一部分

编辑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']

您可以使用
itertools

n = 3
itertools.product(*['abc']*n)

这将为您提供您所期望的27个元素。

请编写一些代码和/或具体告诉我们您在尝试这样做时面临的问题。您可以使用递归来完成。我同意这是重复的,很抱歉错过了它。我仍然想知道递归方法如何做到这一点,因为在其他线程中没有详细提及。您的编辑已将此作为讨论/轮询问题—它不再有特定的正确答案,甚至不再有特定的问题(“我感兴趣…”)。这不是本网站的主题。看起来不对-如果字母表大小(iterable)是长度3,并且r=3,你会期望有3^3个序列,但是len([x代表x,在与替换的组合中([A',B',C',3])返回10。请参阅我的编辑,哪个元素是错误的?:-)没有错,但它遗漏了一些。应该有3^3,或27个元素:[''。在产品中为x加入(x)('ABC',重复=3)]['AAA','AAB','AAC','ABA','ABB','ABC','ACA','ACB','ACC','BAA','BAC','BBA','BBB','BBC','BCA','CAB','CAC','CBA','CBC','CCA','CCC']哪里是
'ABA'
'ACA'
等等?请阅读你的链接“组合是按字典排序顺序发出的。”正确答案是(由我)在感谢中给出的,你的权利。链接到您的答案更仔细地阅读
产品
文档,并在链接的副本中查看我的答案