Python 给定字母表中所有可能的字符串
我试图从给定的字母表中以列表的形式生成特定长度的所有可能字符串 我尝试使用iterools Methods主要是itertools.product,但尽管它的长度很小,但正如预期的那样,对于n=100来说,它非常昂贵。我想我让它运行了大约1个小时,但它仍然没有完成Python 给定字母表中所有可能的字符串,python,combinations,Python,Combinations,我试图从给定的字母表中以列表的形式生成特定长度的所有可能字符串 我尝试使用iterools Methods主要是itertools.product,但尽管它的长度很小,但正如预期的那样,对于n=100来说,它非常昂贵。我想我让它运行了大约1个小时,但它仍然没有完成 在合理的时间范围内实现这一点的最快方法是什么?如果您想从大小为m的字母表集生成大小为n的字符串,那么最好的方法莫过于tam**n运行时使用顺序编程模型,n个字母表中的每一个都可以是m个字母中的一个 由于递归深度的原因,下面的递归程序原
在合理的时间范围内实现这一点的最快方法是什么?如果您想从大小为m的字母表集生成大小为n的字符串,那么最好的方法莫过于tam**n运行时使用顺序编程模型,n个字母表中的每一个都可以是m个字母中的一个 由于递归深度的原因,下面的递归程序原则上是在空间上实现的;从技术上讲,到目前为止,我们需要为str_使用字符串列表,因为虽然字符串在Python中是不可变的,但列表是可变的:
def gen_strings(alpha_set, n):
def gen_strings_helper(str_so_far, n_remaining):
if n_remaining == 0:
all_strings.append(str_so_far)
return
for c in alpha_set:
gen_strings_helper(str_so_far + c, n_remaining - 1)
all_strings = []
gen_strings_helper('', n)
return all_strings
>>> gen_strings(['a', 'b'], 3)
['aaa', 'aab', 'aba', 'abb', 'baa', 'bab', 'bba', 'bbb']
为了加快速度,您应该研究并行编程模型
但是,如果n=100和m=26是一组小写英文字母,您的输出将是26**100个字符串 给定的字母表是什么意思?假设我们有L=['a','b']。我们需要L中长度为100的所有可能组合。生成例如26**100个字符组合的合理时间范围是什么?即使使用两个字符的字母表,也要考虑二进制!,有1267650600228229401496703205376个可能的输出。在每次输出1ns时,这是宇宙年龄的2900倍。你计算过,在长度为100的情况下生成多少个组合吗?有1267650600228229401496703205376这样的字符串。在任何合理的时间范围内,您都不会对它们进行迭代。你就是不是。接受它。