【发布时间】:2015-03-26 16:46:30
【问题描述】:
def fib(a, b, f):
fib 必须生成(使用收益率)广义斐波那契 序列,a 和 b 是第一个和第二个元素。 f 是获取第三个元素的函数,而不是作为正常的斐波那契数列的 a+b。使用 take 函数(如下所示)对其进行测试。
我的代码在下面
def fib(a, b, f):
x = a
y = b
yield x
x, y = y, f(x,y)
fib(x,y,f)
我不知道我的代码有什么问题,当我尝试测试它时,它显示
"TypeError: 'generator' object is not subscriptable"
测试用例是:
take(5, fib(0, 1, lambda x, y: x - y))
应该输出:
[0, 1, -1, 2, -3]
并按照我写的那样发挥作用:
def take(n, iterable):
x = []
if n <= 0:
return x
else:
for i in range (0,n):
x.append(iterable[i])
return x
【问题讨论】:
-
yield返回生成器而不是迭代器。 -
是
take (...)Python 函数吗?更有可能来自 Haskell ;) -
@Anzel 这是 OP 自己定义的函数。
-
@augurar,我知道,我只是有点讽刺;)
标签: python generator fibonacci yield function