【发布时间】:2016-10-05 09:03:12
【问题描述】:
在Python tutorial 中,我了解到
像函数一样,生成器可以递归编程。下列 示例是一个生成器,用于创建给定项目列表的所有排列。
def permutations(items):
n = len(items)
if n==0: yield []
else:
for i in range(len(items)):
for cc in permutations(items[:i]+items[i+1:]):
yield [items[i]]+cc
for p in permutations(['r','e','d']): print(''.join(p))
for p in permutations(list("game")): print(''.join(p) + ", ", end="")
我无法弄清楚它是如何产生结果的。递归的东西和“产量”真的让我很困惑。有人能把整个过程解释清楚吗?
【问题讨论】:
-
如果您不熟悉递归,请先查看一些更简单的示例。
-
递归的东西和'yield'混在一起,这让我抓狂。但是,无论如何,谢谢你的回答。
-
如果您无法理解递归和生成器的组合,则意味着您没有正确理解这两部分之一。
标签: python recursion generator permutation