2013-10-21 37 views

回答

7

使用any()來測試子列表:

if any(a in subl for subl in mylist): 

此測試每個subl但如果發現匹配早離開發生器表達式循環。

這不是不是,但是,返回匹配的特定子列表。你可以使用next()與發電機表達式找到的第一個匹配:

matched = next((subl for subl in mylist if a in subl), None) 
if matched is not None: 
    matched[1] += 1 

其中None是默認返回如果發電機表達引起了StopIteration例外,也可以忽略默認和使用異常處理來代替:

try: 
    matched = next(subl for subl in mylist if a in subl) 
    matched[1] += 1 
except StopIteration: 
    pass # no match found 
2

你可以使用any()與列表理解(當然,發電機內涵這裏):

inList = any(a in sublist for sublist in mylist) 
相關問題