如何减少很多 "if" 语句

How to reduce a lot of "if" statements

def tribonacci(signature, n):
    f = 0
    if n == 0:
        return []
    if n == 1:
        return [signature[0]]
    if n == 2:
        return [signature[0], signature[1]]
    while len(signature) != n:
        i = signature[0 + f] + signature[1 + f] + signature[2 + f]
        signature.append(i)
        f += 1
    return signature

这是来自 codewars.com 的三波那契(与斐波那契相同,但有 3 个数字)代码,我知道它可以更漂亮和优雅,但我想知道如何减少这个特定部分:

if n == 0:
    return []
if n == 1:
    return [signature[0]]
if n == 2:
    return [signature[0], signature[1]]

谢谢!

3种情况0, 1, 2可以减少为一种,因为所有return签名列表直到给定n

if n < 3: # if 0 <= n < 3: can be used for satefy
    return signature[:n]

您可以在您的 if 语句中看到,当 n==0 return 为空列表时,对于 n==1,return 是列表中的一项,对于 n==2 也是如此return 列表中的两个项目。

因此,您可以在一个 if 语句中执行以下操作:

if 0 <= n < 3:
   return list(signature[:n])

这是您问题的完整代码。

def tribonacci(signature, n):
   #your code here
   f = 0
   if 0 <= n < 3:
      return list(signature[:n])
   while len(signature) != n:
      i = signature[0 + f] + signature[1 + f] + signature[2 + f]
      signature.append(i)
      f += 1
   return signature