【发布时间】:2014-03-20 11:47:59
【问题描述】:
我无法理解此生成器的工作原理。它究竟是如何创建排列的?此外,在代码中,yield[items[i]] + cc 产生什么以及到哪里?每次调用yield[items[i]] + cc 时,列表yield[] 会添加什么? (还有什么添加的吗?)我很抱歉,但我真的很困惑:(
很抱歉提出这样一个新手问题,我希望有人能帮助我更好地理解这一点!谢谢!
def permutations(items):
n = len
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)
【问题讨论】:
-
dabeaz.com/generators/Generators.pdf 在我刚开始学习时对我很有用。
-
这个sn-p有一些错误。
n应该是len(items)并且第二个for循环中缺少右括号 -
另外,this SO question 解释了很多关于生成器的内容;-)
-
你的函数是递归幂集算法。有一个很好的描述here。
标签: python generator permutation