Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.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-无需递归即可获得所有可能的替换组合_Python_String_Permutation - Fatal编程技术网

python-无需递归即可获得所有可能的替换组合

python-无需递归即可获得所有可能的替换组合,python,string,permutation,Python,String,Permutation,在python中,当length=n时,如何编写一个函数来获取一些数字n并打印所有可能的单词(a-z)排列(带替换) 不使用递归,也不使用外部函数,如itertools.permutations,itertools.compositions等 例如: n=2应打印 aa ba ... za ab bb ... zb ... az bz ... zz n=3 aaa baa ... zaa aba aca ... aza aab aac ... aaz abb abc ... abz acb a

在python中,当
length=n
时,如何编写一个函数来获取一些数字n并打印所有可能的单词(a-z)排列(带替换)

不使用递归,也不使用外部函数,如
itertools.permutations
itertools.compositions

例如:
n=2
应打印

aa ba ... za
ab bb ... zb
...
az bz ... zz
n=3

aaa baa ... zaa
aba aca ... aza
aab aac ... aaz
abb abc ... abz
acb acc ... acz
...
azz bzz ... zzz  

基本上你在数。这里有一个例子。A试图保持其简单性,以便易于遵循:

def get_string(idxlist, item_list):
    return ''.join([item_list[i] for i in idxlist])

def increment_vector(idxlist, max_count):
    idxlist[0] += 1
    for i in xrange(len(idxlist)-1):
        if idxlist[i] < max_count:
            break
        idxlist[i]=0
        idxlist[i+1] += 1

def generate(n, item_list):
    max_count = len(item_list)

    idxlist = [0] * n
    while idxlist[-1] < max_count:
        print ( get_string( idxlist, item_list )),
        increment_vector(idxlist, max_count)
        if idxlist[0]==0:
            print 

item_list = map(chr, range(97, 123)) # letters from a-z

generate(3, item_list)
def get_字符串(idxlist,item_列表):
返回“”。加入([idxlist中i的项列表[i])
def增量向量(idxlist,最大计数):
idxlist[0]+=1
对于X范围内的i(len(idxlist)-1):
如果idxlist[i]<最大计数:
打破
idxlist[i]=0
idxlist[i+1]+=1
def生成(n,项目列表):
最大计数=长度(项目列表)
idxlist=[0]*n
而idxlist[-1]
您真正处理项目的唯一一点是get_字符串


编辑:进行小调整,使输出的格式与您的问题相同

请参阅文档中的代码,我认为您说“替换”很重要。。。至少你在你的例子中就是这么做的。这里是组合与替换的正确链接:@mtk99这个例子不打印相反的内容(打印“ab”,但不打印“ba”)。我可以用“反向”,但我很肯定有更好的方法