2016-03-03 56 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 
相關問題