Retrieving an object from a set
Peter Otten
__peter__ at web.de
Sat Jan 26 03:10:24 EST 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