[EMAIL PROTECTED] wrote: > > >> Another way might be to sort by absolute value: > >> > >> intermed = [(abs(v), v) for v in foo] > >> intermed.sort() > >> intermed[0][1] > > Duncan> It is slightly simpler if you use sorted (assuming a recent > Duncan> enough Python): > > Duncan> intermed = sorted(foo, key=abs) > Duncan> print intermed[0] > > Yeah, sorted() is new enough that my brain generally doesn't realize it's > available. I also never remember the key parameter to list.sort().
You're not the only one who has trouble remembering just what is in each version. > Now that you mention it: > > >>> foo = [5, 2, -1, -7, 3, -6, 2, 12] > >>> foo.sort(key=abs) > >>> foo > [-1, 2, 2, 3, 5, -6, -7, 12] > > (assuming you don't mind reording the list - if you do, then sorted() is > your friend). And for Python 2.5 users only we have the exciting new option of: >>> foo = [5, 2, -1, -7, 3, -6, 2, 12] >>> min(foo, key=abs) -1 -- http://mail.python.org/mailman/listinfo/python-list