2017-06-02 39 views
0

此行拋出一個錯誤,說我沒有定義x即使我說,x是列表中的一個元素:爲什麼此生成器表達式會引發語法錯誤?

any(i.isdigit() for i in x for x in [name.id for name in all.names]) 

所以x是列表中的字符串元素,我檢查如果每個元素x中的某個字符,該元素x包含使用.isdigit()的數字。這是怎麼回事?

回答

5

Python中的理解/生成器表達式從左到右嵌套(是的,它可能有點混亂)。交換他們:

for x in [name.id for name in all.names] for i in x 

或分離出來的清晰度:

def contains_digit(s): 
    return any(c.isdigit() for c in s) 


any(contains_digit(name.id) for name in all.names) 
相關問題