On Sunday, 7 July 2013 03:53:09 UTC+1, David Mertz wrote:
<snip>
from collections import segment # tentative name, see various
suggestions in thread only1, only2, intersection = segment(iter1, iter2)
In behavior, this should do the same thing as the below (just faster):
def segment(iter1, iter2): set1, set2 = map(set, (iter1, iter2)) return set1 - set2, set2 - set1, set1 & set2
Hi David, I really am not sure about generalizing the interface to iterators and then immediately turning them into sets in the implementation. I think the functionality can be naturally explained as an operation on two sets and should be restricted to sets. The caller should have to map other types to sets explicitly. If it turns out that the implemented algorithm in C would work just as well with one of the arguments being any finite iterator and the other needing to be a set then we could still stick with requiring two sets or change to a format of: set_only, common, iter_only = some_set.????(some_iterator)