如何确定列表中的项目是否以某个字符开头?(Python)
我试图在python中遍历一个列表,并确定列表中是否有以字符如何确定列表中的项目是否以某个字符开头?(Python),python,list,Python,List,我试图在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”
“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”,“basketball”])
将返回True
,但isA([“basketball”,“acorn”]
返回False
,当它应该返回True
时,因为列表中有一个项目以a
开头,在if
块中有一个返回
,在else
块中有一个返回
。因此,无论条件如何计算,您都绝对会遇到返回rn
函数将立即终止,迭代次数不超过一次
如果要检查是否有任何项目以“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
您在
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
只需使用any()
函数:
def isA(mylist):
if any(l.startswith("a") for l in mylist):
print "True"
return True
else:
print "False"
return False
只需使用any()
函数:
def isA(mylist):
if any(l.startswith("a") for l in mylist):
print "True"
return True
else:
print "False"
return False
在浏览完整个列表之前不要返回False。
返回any(对于myList中的ele,ele[0]==“a”)
,这要短得多,并且由于正确的原因短路;)在浏览完整个列表之前不要返回False。返回any(对于myList中的ele,ele[0]==“a”)
,这要短得多,而且短路的原因是正确的;)