[issue15224] Range: Additional Methods (min/max/__and__)

2012-06-30 Thread Raymond Hettinger
Raymond Hettinger added the comment: FWIW, I concur with rejecting this for the reasons that Mark mentioned. -- nosy: +rhettinger ___ Python tracker ___

[issue15224] Range: Additional Methods (min/max/__and__)

2012-06-30 Thread Mark Dickinson
Mark Dickinson added the comment: Okay, I'm closing this as rejected. Some responses: > I don't think that complexity or specialisation should matter. Well, Python's supposed to be a general-purpose language; range objects *are* generally useful for all sorts of tasks, but it's far from cle

[issue15224] Range: Additional Methods (min/max/__and__)

2012-06-30 Thread Yclept Nemo
Yclept Nemo added the comment: >> None of those are specific to arithmetic progressions (i.e., range-like >> lists / sets), as far as I can tell. Does this (the data-type involved) really matter? >> I could see more use for general list-intersection functionality. The way to implement generi

[issue15224] Range: Additional Methods (min/max/__and__)

2012-06-30 Thread Mark Dickinson
Mark Dickinson added the comment: > However, the concept of the intersection of ordered sets is commonplace > and implemented in other libraries, for example: None of those are specific to arithmetic progressions (i.e., range-like lists / sets), as far as I can tell. I could see more use for

[issue15224] Range: Additional Methods (min/max/__and__)

2012-06-29 Thread Serhiy Storchaka
Serhiy Storchaka added the comment: > On a side note, glancing at Python-3.3.0a4/Objects/rangeobject.c: > range_contains seems to iterate through the entire range whereas __contains__ > from the attached Range.py is O(1) See issue1766304. For int range.__contains__ is O(1), for custom types th

[issue15224] Range: Additional Methods (min/max/__and__)

2012-06-29 Thread Yclept Nemo
Yclept Nemo added the comment: On a side note, glancing at Python-3.3.0a4/Objects/rangeobject.c: range_contains seems to iterate through the entire range whereas __contains__ from the attached Range.py is O(1) -- ___ Python tracker

[issue15224] Range: Additional Methods (min/max/__and__)

2012-06-29 Thread Yclept Nemo
Yclept Nemo added the comment: >>> a=Range.Range(5,61,4) >>> ar=Range.Range(57,1,-4) >>> b=Range.Range(21,63,6) >>> br=Range.Range(57,15,-6) >>> list(a); list(ar); list(b); list(br) [5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57] [57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5] [21,

[issue15224] Range: Additional Methods (min/max/__and__)

2012-06-29 Thread Yclept Nemo
Yclept Nemo added the comment: > max and min for a range object are already O(1) one-liners: true; dropping > As for __and__, it doesn't feel like a particularly natural operation to me, > given that a range object represents an *ordered* sequence of integers rather > than just a subset. Tr

[issue15224] Range: Additional Methods (min/max/__and__)

2012-06-29 Thread Mark Dickinson
Mark Dickinson added the comment: max and min for a range object are already O(1) one-liners: >>> a = range(3, 21, 5) >>> a[-1] if a.step > 0 else a[0] # max(a) 18 >>> a[0] if a.step > 0 else a[-1] # min(a) 3 As for __and__, it doesn't feel like a particularly natural operation to me, given

[issue15224] Range: Additional Methods (min/max/__and__)

2012-06-29 Thread Yclept Nemo
New submission from Yclept Nemo : Python 3.3 expands the range class but I would find some additional methods useful: min/max: provides O(1) time __and__: provides intersection: Range(...) & Range(...) examples: intersection #1: a=Range.Range(9,58,4) b=Range.Range(15,69,6) c=a&b print(c) Range