![](/img/trans.png)
[英]Different results for list comprehension of files in directory compared to traditional loop
[英]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.