我想生成一个序列(tribonacci,其中我有序列的前三个数字,下一个数字/元素是通过对最后三个数字求和得到的。(如在斐波那契中)。
这是我的代码:
def tribonacci(signature, n): trib = signature for x in range(3,n, 1): trib.append(sum(signature[x - 3:x]) return trib
其中n是序列中元素的数量。我一直在收到语法错误。我的代码可能有什么问题
答案 0 :(得分:1)
不是这样的答案,但请注意,您可以将此类序列编写为生成器(yield
值,与函数不同{{1}他们),而不是预先提供return
并构建整个列表:
n
在使用中,例如:
def trib(signature):
"""Generate a tribonacci sequence from the supplied signature."""
a, b, c = signature
while True:
yield a
a, b, c = b, c, a + b + c
这更节省内存,因为您可以无限期地迭代它,而不需要存储超过三个值>>> trib_111 = trib((1, 1, 1))
>>> for _ in range(10):
print next(trib_111)
1
1
1
3
5
9
17
31
57
105
,a
和b
。
答案 1 :(得分:0)
trib.append(sum(signature[x - 3:x])
在此行末尾缺少右括号
应该是:
trib.append(sum(signature[x - 3:x]))