[Raymond Hettinger] > Parameterized filter, extract, and reduce functions can be handled in a > like manner.
Just for grins, here is a more worked-out example: def pfunc(inputfields, operation): "Parameterized computation of a new field" # For example, append a field that is the sum of fields 1 and 3: # z = pfunc((1, 3), operator.add) # print map(z, database) def z(record): newfield = operation(*[record[f] for f in inputfields]) return record + (newfield,) return z def rfunc(inputfield, operation): "Parameterized reduce operation" # # For example, find the maximum value of field 2: # r = rfunc(2, max) # print reduce(r, database) def z(cumval, record): x = record[inputfield] return operation(cumval, x) return z def filt_func(inputfields, operation): "Parameterized filter operation" # # For example, get records where field1 < field2: # f = filt_func((1, 3), operator.lt) # print filter(f, database) def z(record): i, j = inputfields return operation(i, j) return z def xfunc(fields): "Parameterized extract operation" # # For example, extract fields 1, 3, and 4 # x = xfunc((1,3,4)) # print map(x, database) def z(record): return tuple([record[f] for f in fields]) return z # ---- The examples can be run on the following sample database: ---- database = [ (10, 25, 30, 40, 50, 60), (100, 250, 300, 400, 500, 600), (1, 2.5, 3, 4, 5, 6), ] -- http://mail.python.org/mailman/listinfo/python-list