检查列表中的项目

时间:2013-05-25 04:03:51

标签: python list

我有这样的功能:

def checks(a,b):
    for item in a:
        if b[1] == item[1]:
           return True
        else:
           return False

我想检查b的第二个值是否在item的第二个值中,例如:

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

但我现在拥有的代码将返回False,因为我相信它会将'6y''5v'进行比较。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

这可以用更简单的方式表达:

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

答案 2 :(得分:2)

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