我想创建一个用于排列目的的生成器。我知道还有其他方法可以在python中执行该操作。但这是另外一种方法。但我无法产生价值。你能帮忙吗?在python中产生递归函数
def perm(s,p=0,ii=0):
l=len(s)
s=list(s)
if(l==1):
print ''.join(s)
elif((l-p)==2):
yield ''.join(s)
yield ''.join([''.join(s[:-2]),s[-1],s[-2]])
#print ''.join(s)
#print ''.join([''.join(s[:-2]),s[-1],s[-2]])
else:
for i in range(p,l):
tmp=s[p]
s[p]=s[i]
s[i]=tmp
perm(s,p+1,ii)
而不是'''.join([''。join(s [: - 2]),s [ -1],s [-2]])',你可以做'''.join(s [: - 2] + [s [-1],s [-2]])'或者稍微不太明显的' ''.join(s [: - 2] + s [: - 3:-1])'(从末尾向后切片,但不包括末尾的第三个字符)。 – Dougal