我正在尝试迭代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
Run Code Online (Sandbox Code Playgroud)
例如,当它应该返回时isA(["acorn", "baseball"])返回True,但isA(["baseball", "acorn"]返回False,True因为列表中有一个项目以a.
你有一个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
Run Code Online (Sandbox Code Playgroud)
或者,完全跳过编写函数并使用内置函数any.
>>> any(s.startswith("a") for s in ["baseball", "acorn"])
True
Run Code Online (Sandbox Code Playgroud)