经过一番挠头和谷歌搜索,我还是搞不懂这个。我对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'))
如果我运行下面的代码,它会在我的显示面板上打印出来,但是我不知道如何将它转换成可以被其他程序(如列表)使用的输出格式。在
^{pr2}$当我还留着头发的时候,能不能有人给我个建议!非常感谢。在
谢谢你
乔恩
像这样?在
输出:
^{2}$编辑: 我刚意识到你说过不允许重复字符。对于“word”并不重要,但假设您有“wordwwdd”。然后你可以:
但是由于使用了set,它将扰乱顺序,因此它看起来像:
基本上你的错误在
.extend()
不返回新列表,而是修改实例。在另一个问题是不使用递归调用的返回值。 以下是修复代码的一种方法:
^{2}$我会这样做:
使用它:
^{2}$以及
印刷品:
相关问题 更多 >
编程相关推荐