gpt4 book ai didi

python - 无需递归即可通过替换获取所有可能的排列

转载 作者:太空宇宙 更新时间:2023-11-03 16:53:14 25 4
gpt4 key购买 nike

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

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

例如: 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)

您真正处理项目的唯一点是在 get_string 中。

编辑:进行小调整,以便输出的格式类似于您的问题

关于python - 无需递归即可通过替换获取所有可能的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35672781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com