为了账号安全,请及时绑定邮箱和手机立即绑定

检查清单中的项目

检查清单中的项目

慕慕森 2021-03-09 13:09:11
我有一个像这样的功能:def checks(a,b):    for item in a:        if b[1] == item[1]:           return True        else:           return False我想检查b的第二个值是否在a中的项的第二个值中,例如:checks(['5v','7y'],'6y')>>> True但是,我现在所拥有的代码将返回False,因为我认为这是比较'6y'有'5v'。我该如何解决?
查看完整描述

3 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

您将返回True正确的位置,但是如果第一项不匹配,该函数将False立即返回,而不是继续循环。只需将移到return False函数的末尾,即循环之外:


def checks(a,b):

    for item in a:

        if b[1] == item[1]:

           return True


    return False

True如果项目匹配False则返回,如果循环不匹配则返回。


无论如何,这解释了为什么您的代码无法正常工作,而是any按照其他人的建议使用Pythonic的原因。=)


查看完整回答
反对 回复 2021-03-26
?
月关宝盒

TA贡献1772条经验 获得超5个赞

这可以用一种更简单的方式表示:


def checks(a, b):

    return any(b[1] == item[1] for item in a)


查看完整回答
反对 回复 2021-03-26
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

您可以any()在这里使用:


def checks(a,b):

    return any (b[1] == item[1] for item in a)


>>> checks(['5v','7y'],'6y')

True

>>> checks(['5v','7z'],'6y')

False

帮助any:


>>> print any.__doc__

any(iterable) -> bool


Return True if bool(x) is True for any x in the iterable.

If the iterable is empty, return False.


查看完整回答
反对 回复 2021-03-26
  • 3 回答
  • 0 关注
  • 171 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信