>>>> foo = [-5,-1,2,3] # nearest value to zero ? >>>> [value for value in foo if math.fabs(value) == min([int(math.fabs(x)) for x in foo])] charles> [-1]
charles> Something simpler ? Well, you can just use the abs() builtin instead of math.fabs. Also, just compute the min/abs once: minval = min([int(math.fabs(x)) for x in foo]) [value for value in foo if fabs(value) == minval] Another way might be to sort by absolute value: intermed = [(abs(v), v) for v in foo] intermed.sort() intermed[0][1] That only gives you one of possibly many values closest to zero. charles> How to extend this function to any given value ? Just subtract that value from all values in the list: intermed = [(abs(v-x), v) for v in foo] intermed.sort() intermed[0][1] Skip -- http://mail.python.org/mailman/listinfo/python-list