发电机物P我使用Python 3.4 *和我想要执行下面的代码:蟒蛇错误:在0x02DAC198
def P(n):
if n == 0:
yield []
return
for p in P(n-1):
p.append(1)
yield p
p.pop()
if p and (len(p) < 2 or p[-2] > p[-1]):
p[-1] += 1
yield p
print(P(5)) # this line doesn't make sense
for i in P(5): # but this line does make sense thanks to furkle
print(i)
但我正在逐渐<generator object P at 0x02DAC198>
而不是输出。
有人可以解释我的代码中需要修复的地方吗?我不认为py喜欢函数名P,但我可能是错的。
编辑:furkle澄清<generator object P at 0x02DAC198>
。
顺便说一下,我目前正在尝试编写自己的修改过的分区函数,并试图理解与经典设置相对应的这一个。
您的代码*按设计工作*。这里没有错误,因为你使用了yield,所以你产生了一个generator函数。你预期会发生什么? – 2014-10-29 16:50:04
使用'list(P(5))'会给你空列表,但是我的猜测是这并不是你想要看到的,要么... – dano 2014-10-29 16:52:13
我认为这是我第一次修改后的生成器看到。它产生的列表不是空的,然后清空它们,如果你继续阅读。 – 2014-10-29 17:22:10