[Python-ideas] Fwd: exclusively1, common, exclusively2 = set1 - set2, set1 & set2, set2 - set1

Joshua Landau joshua.landau.ws at gmail.com
Thu Jul 4 02:00:37 CEST 2013


---------- Forwarded message (apologies, the CC says it all) ----------
From: Joshua Landau <joshua.landau.ws at gmail.com>
Date: 4 July 2013 00:57
Subject: Re: [Python-ideas] exclusively1, common, exclusively2 = set1
- set2, set1 & set2, set2 - set1
To: Paddy3118 <paddy3118 at gmail.com>
Cc: python-ideas at googlegroups.com

On 3 July 2013 21:50, Paddy3118 <paddy3118 at gmail.com> wrote:
> I found myself repeating something that I know I have used before, several
> times: I get two sets of results, may be sets of the passing tests when a
> design has changed, and I need to work out what has changed so work out
>
> 1. What passed first time round
> 2. What passed both times.
> 3. What passed only the second time round.
>
> I usually use something like the set equations in the title to do this but I
> recognise that this requires both sets to be traversed at least three times
> which seems wasteful.

As far as I understand, this requires only 3 traversals in total.

> I wondered if their was am algorithm to partition the two sets of data into
> three as above, but cutting down on the number of set traversals?

You could cut it down to two, AFAIK. This seems like a minor gain.

> I also wondered that if such an algorithm existed, would it be useful enough
> to be worth incorporating into the Python library?
>
> Maybe defined as:
>
> exclusively1, common, exclusively2 = set1.partition(set2)

Something more useful, as it's just as good in this case could be:

    set1.partition(set2) === set1 - set2, set1 & set 2

similarly to how we have divmod.


More information about the Python-ideas mailing list