Retrieving an object from a set

Peter Otten __peter__ at web.de
Sat Jan 26 09:10:24 CET 2013


Vito De Tullio wrote:

> MRAB wrote:
> 
>> It turns out that both S & {x} and {x} & S return {x}, not {y}.
> 
> curious.
> 
> $ python
> Python 2.7.3 (default, Jul  3 2012, 19:58:39)
> [GCC 4.7.1] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
>>>> x = (1,2,3)
>>>> y = (1,2,3)
>>>> s = set([y])
>>>> (s & set([x])).pop() is y
> False
>>>> (set([x]) & s).pop() is y
> True
> 
> maybe it's implementation-defined?

I think the algorithm looks for the smaller set:
 
>>> set(range(5)) & set(map(float, range(10)))
set([0, 1, 2, 3, 4])
>>> set(range(10)) & set(map(float, range(5)))
set([0.0, 1.0, 2.0, 3.0, 4.0])

You have two sets of the same length, so there is no advantage in swapping 
them before calculating the intersection.




More information about the Python-list mailing list