Sorry - it looks like Guido's time machine have been there. Since it does not mean anything (as in meaningless) to compare ranges without specifying a "key", and since ordering functions in Python do allow a "key" - it looks like this problem is already resolved, whatever the need:
sorted([range(10), range(1,14, 3)], key=len) [range(1, 14, 3), range(0, 10)] sorted([range(10), range(1,14, 3)], key=max) [range(0, 10), range(1, 14, 3)] sorted([range(10), range(1,14, 3)], key=min) [range(0, 10), range(1, 14, 3)]
On 23 April 2015 at 22:11, Terry Reedy <tjreedy@udel.edu> wrote:
On 4/23/2015 8:31 PM, MRAB wrote:
On 2015-04-24 01:15, Ethan Furman wrote:
On 04/23, Riley Banks wrote:
I propose adding the ability to compare range objects using methods (e.g. range.issubrange) and/or regular operators. Example:
In [56]: range(0, 10, 3).issubrange(range(10)) Out[56]: True
In [57]: range(0, 10, 3) <= range(10) Out[57]: True
This was not obvious to me. Ranges are not sets.
In [58]: range(10) <= range(0, 10, 3) Out[58]: False
I seem to recall orderable ranges being rejected before. For example, is less-than, or subrange, dependent on the values themselves, or on the lowest and highest values, or on the start and end value, or ...
I remember the same. There is no intuitive answer. Let us not rehash this again.
In other words, given:
a = range(11) b = range(12, step=3)
is a < b, or b < a? Why?
It could be functionally equivalent to list(a) < list(b).
For range(0, 10, 3) <= range(10), this would give the opposite answer as the set interpretation.
-- Terry Jan Reedy
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/