Python:Tribonaci序列-这些代码有什么区别?

Python:Tribonaci序列-这些代码有什么区别?,python,python-3.x,indexing,slice,Python,Python 3.x,Indexing,Slice,我正在尝试解决codewars()挑战: 6 kyu:Fibonacci、Tribonacci和朋友们 挑战: 设想一个四元波纳奇以4个元素的签名开始,后面的每个元素都是前4个元素的和,一个五元波纳奇(Cinkuebonacci听起来可能更像意大利语,但听起来也很糟糕)以5个元素的签名开始,后面的每个元素都是前5个元素的和,依此类推 您必须构建一个Xbonacci函数,该函数接受X个元素的签名——记住,下一个元素是最后X个元素的总和——并返回种子序列的前n个元素 但我似乎无法理解这两个函数之

我正在尝试解决codewars()挑战:

6 kyu:Fibonacci、Tribonacci和朋友们


挑战:

设想一个四元波纳奇以4个元素的签名开始,后面的每个元素都是前4个元素的和,一个五元波纳奇(Cinkuebonacci听起来可能更像意大利语,但听起来也很糟糕)以5个元素的签名开始,后面的每个元素都是前5个元素的和,依此类推

您必须构建一个Xbonacci函数,该函数接受X个元素的签名——记住,下一个元素是最后X个元素的总和——并返回种子序列的前n个元素


但我似乎无法理解这两个函数之间的区别。 第一个被拒绝,而第二个被接受

拒绝代码:

def Xbonacci(signature, num):    
    a_list = signature[:] 
    final_list = signature[:]

    for i in range(0, num-len(signature)):     

        a = sum( a_list[ :len(a_list)] )                 
        final_list.append(a)                  
        a_list.append(a)    
        a_list.remove(a_list[0])

    return final_list
认可代码:

def Xbonacci(signature,n):
    result = signature[:]

    for x in range(n-len(signature)):
        current_fib = 0
        start = len(result) - len(signature)
        for y in result[start:]:
            current_fib += y
        result.append(current_fib)

    return result[:n]

我遗漏了什么吗?

n
时,这两个函数有不同的行为

职能1:

>>> Xbonacci([1, 2, 3], 1)
[1, 2, 3]
职能2:

>>> Xbonacci([1, 2, 3], 1)
[1]

由于质询显示“返回种子序列的前n个元素”,因此第一个函数不正确。

n
时,这两个函数的行为不同。