On Tue, Sep 7, 2010 at 8:34 PM, Matthew Woodcraft
<matt...@woodcraft.me.uk> wrote:
> In CPython, the builtin max() and min() have the property that if there
> are items with equal keys, the first item is returned. From a quick look
> at their source, I think this is true for Jython and IronPython too.

It's actually not clear to me that this behaviour is ideal;  it might
make more sense to have max() return the first item among equal
largest elements, and min() return the last item.  That way, the
special case of two operands has the nice property that (max(x, y),
min(x, y)) is always either (x, y) or (y, x), rather than being
possibly (x, x) or (y, y).  (That is, id(max(x, y)) and id(min(x, y))
are id(x) and id(y) in one order or the other.)

The max and min methods for the Decimal module take care to work this
way, for example:

>>> x, y = Decimal(2), Decimal('2.0')
>>> x.max(y), x.min(y)
(Decimal('2'), Decimal('2.0'))

But:

>>> max(x, y), min(x, y)
(Decimal('2'), Decimal('2'))


Can you give examples of code that relies on max and min returning the
first among equals?

Mark
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to