[英]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 的 Tribonacci(與 Fibonacci 相同,但有 3 個數字)代碼,我知道它可能更漂亮和優雅,但我想知道如何減少這個特定部分:
if n == 0:
return []
if n == 1:
return [signature[0]]
if n == 2:
return [signature[0], signature[1]]
謝謝!
3 種情況0, 1, 2
可以減少為一種,因為都返回簽名列表,直到給定n
if n < 3: # if 0 <= n < 3: can be used for satefy
return signature[:n]
您可以在 if 語句中看到,當 n==0 返回為空列表時,對於 n==1,返回列表中的一項,對於 n==2,返回列表中的兩項。
因此,您可以在一個 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.