在python中,我怎样才能编写一个函数来获取一些数字n并在length=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
答案 0 :(得分:1)
基本上你在数。这是一个例子。试图保持简单,因此很容易遵循:
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。
编辑:小调整,以便输出格式与您的问题一样