生成序列中的项目

时间:2015-07-23 13:55:43

标签: python sequence

我想生成一个序列(tribonacci,其中我有序列的前三个数字,下一个数字/元素是通过对最后三个数字求和得到的。(如在斐波那契中)。

这是我的代码:

def tribonacci(signature, n):
    trib = signature
    for x in range(3,n, 1):
        trib.append(sum(signature[x - 3:x])
    return trib

其中n是序列中元素的数量。我一直在收到语法错误。我的代码可能有什么问题

2 个答案:

答案 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 ab

答案 1 :(得分:0)

trib.append(sum(signature[x - 3:x])

在此行末尾缺少右括号

应该是:

trib.append(sum(signature[x - 3:x]))