簡體   English   中英

為什么一行 python 循環和傳統循環返回不同的結果?

[英]why one line python loop and traditional loop return different results?

我有數組,我肯定知道,有兩個滿足條件的對象,我想循環

如果我做

def filter_checks_by_lcode_and_admin(admin_uid, lcode, checks):

    result = []
    for check in checks:
      if check.lcode == lcode and check.admin == admin_uid:
         result.append(check)
    return result

返回包含 2 個對象的正確數組

但是這段代碼

def filter_checks_by_lcode_and_admin(admin_uid, lcode, checks):
    return [check for check in checks if check.admin == admin_uid and check.lcode == lcode]

返回 0

我做錯了什么?

在我們有樣本輸入之前,我們只能推測。 原則上,您的代碼的兩個版本應該是等效的,但要確保在兩個版本中以相同的順序編寫條件:

def filter_checks_by_lcode_and_admin(admin_uid, lcode, checks):
    return [check for check in checks if check.lcode == lcode and check.admin == admin_uid]

如果這改變了結果,那是因為您的代碼有某種副作用,根據執行順序,調用之間的結果會有所不同。 正如您所看到的,當然要避免某些事情,這將導致很難找到錯誤。

您也可以嘗試使用相同的輸入執行代碼,但先嘗試第二個片段,然后再嘗試第一個片段。 如果這有效,那么這將再次表明某些東西正在改變執行之間的輸入狀態,這絕對是一個應該解決的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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