以下是我返回Tribonacci系列中的n
元素的方法
def tri(n,seq = [1, 1, 1]):
for i in range(n-2):
seq = seq[1:] + [sum(seq)]
return seq[-1]
通过print()
传递参数时,我得到正确的结果。
print(tri(10))
输出:193
但是,在使用generator(using repl.it)
时,出现了can only concatenate tuple (not"list") to tuple
的错误
我正在使用下面的发电机
def tri_generator():
for i in range(1000):
yield (i, (1, 1, 1))
yield (i, (1, 0, 1))
yield (i, (1, 2, 3))
不确定我缺少什么?任何帮助表示赞赏。
答案 0 :(得分:1)
这是一个简单的生成器(您可以根据需要清理代码):
def tri_generator():
i = 0
seq = [1, 1, 1]
while True:
seq = [seq[1], seq[2], seq[0] + seq[1] + seq[2]]
yield i, seq
i += 1
n = 10
xx = tri_generator()
for i in range(n - 2):
print(next(xx))
## Output:
## (0, [1, 1, 3])
## (1, [1, 3, 5])
## (2, [3, 5, 9])
## (3, [5, 9, 17])
## (4, [9, 17, 31])
## (5, [17, 31, 57])
## (6, [31, 57, 105])
## (7, [57, 105, 193])