2016-03-03 82 views
1

我想遍历python中的列表,并确定列表中的任何项目是否以字符"a"开头。然而,我的代码似乎只检查列表中的第一个项目,并没有遍历其余的。如何确定列表中的项目是否以某个字符开头? (Python)

def isA(myList): 
for i in range(len(myList)): 
    if myList[i][0] == "a": 
     print "True" 
     return True 
    else: 
     print "False" 
     return False 

例如isA(["acorn", "baseball"])将返回True,但isA(["baseball", "acorn"]回报False,当它应该返回True因为在与a开始的列表中的项目。

+1

,直到你已经走在整个列表不要返回False。 – PaulMcG

+2

'return any(ele [0] ==“a”for ele in myList)'',这是因为正确原因短得多和短路;) –

回答

5

if块中有return块,else块中有return块。因此,无论条件如何评估,您都将绝对达到return,并且该函数将立即终止,迭代次数不会超过一次。

如果要检查是否有任何项目以“a”开头,只要找到不以“a”开头的项目,就不要返回。将return移到该函数的末尾。

def isA(myList): 
    for i in range(len(myList)): 
     if myList[i][0] == "a": 
      return True 
    return False 

或者,也可以跳过写入函数,并使用内置函数any

>>> any(s.startswith("a") for s in ["baseball", "acorn"]) 
True 
1

只需使用any()功能:

def isA(mylist): 
    if any(l.startswith("a") for l in mylist): 
     print "True" 
     return True 
    else: 
     print "False" 
     return False 
相关问题