簡體   English   中英

如何減少大量“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 的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM