Python generator expression parentheses oddity
generator-expression, parentheses, python
Solution
It is legal, and the general rule is that you do need parentheses around a generator expression. As a special exception, the parentheses from a function call also count (for functions with only a single parameter). (Documentation)
Note that testing if `my_string` appears in `my_list` is as easy as
my_string in my_list
No generator expression or call to `any()` needed!
Problem
I want to determine if a list contains a certain string, so I use a generator expression, like so: ``` g = (s for s in myList if s == myString) any(g) ``` Of course I want to inline this, so I do: ``` any((s for s in myList if s == myString)) ``` Then I think it would look nicer with single parens, so I try: ``` any(s for s in myList if s == myString) ``` not really expecting it work. Surprise! it does! So is this legal Python or just something my implementation allows? If it's legal, what is the general rule here?