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?
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!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With