Ron Phillips wrote:
>> short version: I need a way to get max and min E and N out of >> [(E0,N0),(E1,N1)...(En,Nn)] without reordering the list >>> Kent Johnson [EMAIL PROTECTED]> 5/25/2005 10:19 AM >> <clip> >For Python < 2.4 you need another set of [ ] e.g. min([e for e,n in coordList]) </clip>
I knew I was working too hard!! That's exactly what I needed -- for some reason, ESRI (big name in geographic work) uses Python 2.2. Ron Phillips wrote:
>> long version:
>> >> I would like a list of geographic coordinates (Easting, Northing) to >> maintain a "bounding box" >> [(minEasting,minNorthing),(maxEasting,maxNorthing)] attribute. >> >>I did it like this: >> >>class geoCoordinateList(UserList): >>def __init__(self): >>UserList.__init__(self) >>self.boundingBox = geoBox(minEN=geoCoordinate(), >>maxEN=geoCoordinate()) >>def append(self, geoCoord): >>self.extend([geoCoord]) >>self.boundingBox.challenge(geoCoord)#bumps the max and min if >>necessary >>but I'd have to override almost all the UserList methods, unless there's >>a way to call boundingBox.challenge() on any change to the list. >If you don't need too much list functionality it might be easier to wrap a list and delegate the >things you need: >class geoCoordinateList(object): >def __init__(self): >self.list = list() >self.boundingBox = geoBox(minEN=geoCoordinate(), >maxEN=geoCoordinate()) >def append(self, geoCoord): >self.list.append(geoCoord) # No need for extend() here... >self.boundingBox.challenge(geoCoord)#bumps the max and min if necessary >I think you will want at least __getitem__() and __len__() as well. >Kent Yep, that was my problem; I had "too much list functionality" to delegate -- your way is much better for the purpose. I can expose that class without promising all the functionality of a list.
In most languages there are a half-dozen stupid, painful ways to do a job, and maybe one that's merely painful, but in Python there's a half-dozen "ok" ways to do a job, and at least one that's a real pleasure!
Thanks for the answers!
Ron
|
Header
Description: Binary data
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor