我试图遍历python中的列表,并确定列表中的任何项目是否以字符"a"
开头。但是,我的代码似乎只检查列表中的第一项,并且不会迭代其余项。
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
。
答案 0 :(得分:5)
return
块中有if
,return
块中有else
。因此,无论条件如何评估,您绝对会遇到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 :(得分:1)
只需使用any()
功能:
def isA(mylist):
if any(l.startswith("a") for l in mylist):
print "True"
return True
else:
print "False"
return False