我正在阅读《学习Python》一书,作者提供了这两段代码,然后他像 permute1("abc") 一样运行“abc”,当我在 IDLE 中执行此操作时,这会返回 abc 的所有排列。它返回['abc']。我不明白作者是如何说它应该返回 ['abc', 'acb' -- 等等 ] 我在这里缺少什么?
def permute1(seq):
if not seq:
return [seq]
else:
res = []
for i in range(len(seq)):
rest = seq[:i] + seq[i+1:]
for x in permute1(rest):
res.append(seq[i:i+1] + x)
return res
def permute2(seq):
if not seq:
yield seq
else:
for i in range(len(seq)):
rest = seq[:i] + seq[i+1:]
for x in permute2(rest):
yield seq[i:i+1] + x
最佳答案
看起来您在第一个 for 循环中的 return res
行中添加了额外的缩进。
这会使您的函数提前终止。在我们取消缩进后,permute1("abc")
按预期工作。
关于python - 无法理解为什么 IDLE gui 没有返回作者所说的应该返回的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52013020/