Example: you are looking for the minimum absolute value in a series of integers. As soon as you encounter the first 0 it's unnecessary extra work to check the remaining values, but the builtin min() will continue.
The solution is a minimum function that allows the user to specify a stop value: >>> from itertools import count, chain >>> stopmin(chain(reversed(range(10)), count()), key=abs, stop=0) 0 How would you implement stopmin()? Currently I raise an exception in the key function: class Stop(Exception): pass def stopmin(items, key, stop): """ >>> def g(): ... for i in reversed(range(10)): ... print(10*i) ... yield str(i) >>> stopmin(g(), key=int, stop=5) 90 80 70 60 50 '5' """ def key2(value): result = key(value) if result <= stop: raise Stop(value) return result try: return min(items, key=key2) except Stop as stop: return stop.args[0] -- https://mail.python.org/mailman/listinfo/python-list