繁体   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