【发布时间】:2014-04-03 14:01:51
【问题描述】:
经过大量的挠头和谷歌搜索后,我仍然无法弄清楚这一点。我对 Python 很陌生,我在语法上苦苦挣扎。从概念上讲,我认为我对我想要做什么以及如何递归地做这件事有一个相当不错的想法。然而,从技术上讲,将其编码成 Python 被证明是一场噩梦。
基本上我想将一个单词的所有排列添加到列表中(不允许重复的字符),然后可以由另一个程序或函数调用。
return 命令和如何处理空格真的让我很困惑。我希望递归函数在展开后“返回”一些东西,但我不希望它停止函数,直到所有字符都迭代并且所有排列都在这些迭代中递归生成。当我运行下面的代码时,似乎什么也没发生。
def permutations(A, B = ''):
assert len(A) >= 0
assert len(A) == len(set(A))
res = []
if len(A) == 0: res = res.extend(B)
else:
for i in range(len(A)):
permutations(A[0:i] + A[i+1:], B + A[i])
return res
permutations('word'))
如果我运行下面的代码,它会在我的显示窗格中打印出 OK,但我不知道如何将其转换为可供其他程序使用的输出格式,例如列表。
def permutations(A, B = ''):
assert len(A) >= 0
assert len(A) == len(set(A))
if len(A) == 0: print(B)
else:
for i in range(len(A)):
permutations(A[0:i] + A[i+1:], B + A[i])
permutations('word')
在我还有一些头发的时候,请有人给我建议!非常感谢收到。
谢谢
乔恩
【问题讨论】:
-
首先,这是复制
itertools.permutations。其次,您需要阅读yield关键字;它完全符合您的要求。
标签: python recursion return permutation