'any' 不会引发错误?
'any' doesn't raise error?
我在玩,然后我注意到了这个:
>>> 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
>>>
如果 s == s[::-1] for s in l
本身会引发错误,为什么 any(s == s[::-1] for s in l)
会起作用?
any(s == s[::-1] for s in l)
等同于:
any((s == s[::-1] for s in l))
和:
(s == s[::-1] for s in l)
不是语法错误。它是一个生成器表达式。正如您所发现的那样,生成器表达式周围需要括号,除非它们作为函数调用的唯一参数出现。
要完成丹D的回答,
(s == s[::-1] for s in l)
就像:
def your_function():
for s in l:
yield s == s[::-1]
我在玩,然后我注意到了这个:
>>> 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
>>>
如果 s == s[::-1] for s in l
本身会引发错误,为什么 any(s == s[::-1] for s in l)
会起作用?
any(s == s[::-1] for s in l)
等同于:
any((s == s[::-1] for s in l))
和:
(s == s[::-1] for s in l)
不是语法错误。它是一个生成器表达式。正如您所发现的那样,生成器表达式周围需要括号,除非它们作为函数调用的唯一参数出现。
要完成丹D的回答,
(s == s[::-1] for s in l)
就像:
def your_function():
for s in l:
yield s == s[::-1]