On 09/12/12 08:02, Jussi Piitulainen wrote: > Libra writes: >> For example, I may have a list L = [1, 2, 3, 4] and the following >> constraints: >> L[0] >= 1 >> L[1] <= 3 >> L[2] == 2 >> L[3] >= 3 > > So you would associate each constraint with an index. You could > maintain a list of constraints and apply it to the values as follows: > >>>> cs = [ lambda x : x >= 1, lambda x : x <= 3, lambda x : x == 2, > ... lambda x : x >= 3 ]
This can even be decoupled a bit more for dynamic creation: >>> lst = [1,2,3,4] >>> import operator as o >>> conditions = [ ... (o.ge, 1), ... (o.le, 3), ... (o.eq, 2), ... (o.ge, 3), ... ] >>> [op(v, constraint) for ((op, constraint), v) in zip(conditions, lst)] [True, True, False, True] >>> all(compare(value, constraint) for ((compare, constraint), value) in zip(conditions, lst)) False Note that you'd also want to check len(conditions)==len(lst) for obvious reasons. :-) -tkc -- http://mail.python.org/mailman/listinfo/python-list