@xeike: Beides IMHO keine schönen Lösungen. Das `get()` ist nicht wirklich notwendig.
In der ersten Lösung wird eine Kopie von fast der gesamten Liste angelegt.
Bei der zweiten Lösung ist `sammlung` ein *Klassenattribut*, das ist ziemlich sicher ein Fehler. Und im Gegensatz zu einer Liste muss man zwingend ein Objekt hinein tun und alle anderen dann mit einer Methode hinzufügen. Wenn man eine Menge an gleichberechtigen Positionen hat, fände ich das komisch eine anders behandeln zu müssen.
Hier eine Lösung die mit jedem iterierbaren Objekt funktioniert, dass mindestens eine Position liefert und auch nur einmal über die Daten geht um Minimum und Maximum zu bestimmen:
Code: Alles auswählen
class Position(object):
def __init__(self, start, end):
self.start = start
self.end = end
def main():
positions = [
Position(2579, 2712), Position(2813, 2945), Position(3013, 3033)
]
result = reduce(
lambda (a, b), (c, d): (min(a, c), max(b, d)),
((p.start, p.end) for p in positions)
)
print result
if __name__ == '__main__':
main()