2017-02-24 83 views
0

我玩弄然後我注意到了這一點:'any'不會引發錯誤?

>>> l = input().split() 
1 25 11 4 
>>> any(s == s[::-1] for s in l) 
True 
>>> s == s[::-1] for s in l 
SyntaxError: invalid syntax 
>>> 

爲什麼any(s == s[::-1] for s in l)工作,如果s == s[::-1] for s in l本身會提高錯誤?

+1

請解釋爲什麼我不應該問這個問題。 – micahwood50

+0

請將您的代碼添加爲文本,而不是圖片。 – Matthias

+0

這是他們低估了我的原因嗎?他們至少應該知道,他們可以編輯... – micahwood50

回答

3
any(s == s[::-1] for s in l) 

相同:

any((s == s[::-1] for s in l)) 

和:

(s == s[::-1] for s in l) 

不是語法錯誤。這是一個生成器表達式。正如您發現括號是圍繞生成器表達式所必需的,除非它們作爲函數調用的唯一參數出現。

1

要完成丹D.答案,

(s == s[::-1] for s in l) 

是這樣的:

def your_function(): 
    for s in l: 
     yield s == s[::-1]