Python生成器表达式括号奇怪

Ari*_*Ari 14 python generator-expression parentheses

我想确定列表是否包含某个字符串,所以我使用生成器表达式,如下所示:

g = (s for s in myList if s == myString)
any(g)
Run Code Online (Sandbox Code Playgroud)

当然我想内联这个,所以我这样做:

any((s for s in myList if s == myString))
Run Code Online (Sandbox Code Playgroud)

然后我认为单个parens会更好看,所以我尝试:

any(s for s in myList if s == myString)
Run Code Online (Sandbox Code Playgroud)

并不是真的期待它的运作.惊喜!它呢!

那么这个合法的Python还是我的实现允许的东西?如果它是合法的,这里的一般规则是什么?

Sve*_*ach 15

它是合法的,一般规则是你需要在生成器表达式周围使用括号.作为一个特殊的例外,函数调用的括号也会计数(对于只有一个参数的函数).(文件)

请注意,如果my_string出现测试my_list就像这样简单

my_string in my_list
Run Code Online (Sandbox Code Playgroud)

没有生成器表达或any()需要调用!