funcs = [lambda x: x ** 2, lambda y: y * 2, lambda z: z.upper()]
[[f(v) for v, f in zip(x, funcs)] for x in a]
Numpy: Apply an array of functions to a same length 2d-array of value as if multiplying elementwise? (using a python function as an operator?)