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
not sure if your coordinates are strings like 'E0' or if that is a placeholder for an int. If they are ints you can use minE = min(e for e,n in coordList) If they are strings you have to convert minE = min(int(e[1:]) for e,n in coordList) etc For Python < 2.4 you need another set of [ ] e.g. min([e for e,n in coordList]) > 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 _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor