on Wed Jul 04 2007, "Steven D'Aprano" <steve-AT-REMOVE.THIS.cybersource.com.au> wrote:
> On Wed, 04 Jul 2007 14:37:34 +0000, Marc 'BlackJack' Rintsch wrote: > >> On Wed, 04 Jul 2007 09:59:24 -0400, David Abrahams wrote: >> >>> Here's an implementation of the functionality I propose, as a >>> free-standing function: >>> >>> def intersects(s1,s2): >>> if len(s1) < len(s2): >>> for x in s1: >>> if x in s2: return True >>> else: >>> for x in s2: >>> if x in s1 return True >>> return False >> >> In Python 2.5 this can be written a bit more concise: >> >> def intersects(set_a, set_b): >> if len(set_a) < len(set_b): >> set_a, set_b = set_b, set_a >> return any(item in set_a for item in set_b) > > > I'd rather see sets gain an method "isintersect()" And why is that a good name? It's not even grammatical. > with the functionality than the language to gain a built-in > function. How is a method on sets not a built-in function? Anyway, such a method is what I'm proposing. > However, there's a very subtle flaw in the idea. While "the intersection" > of two sets is well-defined, "these two sets intersect" is (surprisingly!) > _not_ well-defined. Depends how you define it. I define it as "has a non-empty intersection," which is pretty obviously solid. The semantics should be identical to len(s1&s2) > 0 Those are exactly the semantics I want, and if mathematical purists are going to argue that "intersects" is the wrong name, I ask that they come up with a better one. -- Dave Abrahams Boost Consulting http://www.boost-consulting.com The Astoria Seminar ==> http://www.astoriaseminar.com -- http://mail.python.org/mailman/listinfo/python-list