繁体   English   中英

检查清单中的项目

[英]Check if item in list

我有一个这样的功能:

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'进行比较。 我该如何解决?

您在正确的位置返回了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的原因。 =)

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

def checks(a, b):
    return any(b[1] == item[1] for item in a)

您可以在此处使用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.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM