我想創建一個用於排列目的的生成器。我知道還有其他方法可以在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