关于Tribonacci的题,解释代码

Tribonacci数列,它的工作原理基本上类似于斐波那契数列,
但将序列的最后 3 个(而不是 2 个)数字相加以生成下一个。

为什么要用[:n]

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

不知道题目具体要求,但是可以通过代码的逻辑猜测出它的行为。
使用[:n]的时候,当n小于给定列表的长度时,它会将列表的前n项切片出来,然后利用这前n项的后三项计算n-3次泰波那契数,所以生成的列表长度应为n+(n-3)=2n-3
如果删去该行,当n小于给定列表的长度时,它会直接利用传入列表的后三项计算n-3次泰波那契数,生成的列表长度应为len(signature)+(n-3)其中n<len(signature),同时因为取的三项数在列表不同位置,生成的n-3个数也基本不同(除非signature[:n][-3:]=signature[-3:])
当n大于等于给定列表的长度时,使用[:n]进行切片不会影响原列表,所以结果一样

n表示的是signature的长度么? 如果是的话 用不用无所谓的