Odd truth result with in and ==

Dan Sommers 2QdxY4RzWzUUiLuE at potatochowder.com
Wed Nov 21 19:02:51 EST 2018


On 11/21/18 6:45 PM, Ian Kelly wrote:
 > On Wed, Nov 21, 2018 at 2:53 PM Serhiy Storchaka 
<storchaka at gmail.com> wrote:
 >>
 >> 21.11.18 22:17, Cameron Simpson пише:
 >>> Can someone show me a real world, or failing that - sane looking,
 >>> chained comparison using "in"?
 >>
 >>       s[0] == s[-1] in '\'"'
 >>
 >> Tests that string s starts and ends with a single or double quote.
 >
 > Clever, but too esoteric to use in practice. I'd rather make the
 > chaining explicit.
 >
 >> It can be also used with sets:
 >>
 >>       elem in set1 <= set2
 >
 > I like this one better.

LOL:  I had exactly the opposite reaction.

The first one expresses exactly the idea that the first and last
elements of the string match and are quotation characters, as if I'd
written:

     (s[0] == s[-1]) and (s[0] in '\'"')

(Arguably too esoteric to be used in practice, *unless* profiling
indicates a necessary (before) and noticable (after) speed improvement.)

But the second one has to do an expensive subset operation.  If I think
"is elem in both sets," then I'd never write:

     (elem in set1) and (set1 <= set2)



More information about the Python-list mailing list