如何减少很多 "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
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