The right-hand-side of your function is already composed of [`Listable`](http://reference.wolfram.com/language/ref/Listable.html) functions, therefore your code will work without any modification. Please reference **Case #5** in http://mathematica.stackexchange.com/questions/7924/alternatives-to-procedural-loops-and-iterating-over-lists-in-mathematica/7925#7925. ClearAll[Y] (* no prior definitions *) Y[k_, q_, {r_, θ_, ϕ_}] := SphericalHarmonicY[k, q, θ, ϕ]/r^(k + 1) lst = {{r1, r2, r3}, {θ1, θ2, θ3}, {ϕ1, ϕ2, ϕ3}}; Y[k, q, lst] > {r1^(-1 - k) SphericalHarmonicY[k, q, θ1, ϕ1], > r2^(-1 - k) SphericalHarmonicY[k, q, θ2, ϕ2], > r3^(-1 - k) SphericalHarmonicY[k, q, θ3, ϕ3]} If the right-hand-side were *not* composed of `Listable` functions then the presently Accepted answer would not work anyway. Observe: Y2[k_, q_, {r_, θ_, ϕ_}] := bar[q, ϕ, foo[k, r, θ]] Thread[Y2[k, q, lst]] > {bar[q, ϕ1, foo[k, {r1, r2, r3}, {θ1, θ2, θ3}]], > bar[q, ϕ2, foo[k, {r1, r2, r3}, {θ1, θ2, θ3}]], > bar[q, ϕ3, foo[k, {r1, r2, r3}, {θ1, θ2, θ3}]]} Note that only `bar` was Threaded over its arguments; `foo` remains undistributed. To solve that case I prefer manual threading through a second definition using [`Unevaluated`](http://reference.wolfram.com/language/ref/Unevaluated.html) to prevent premature evaluation: Y2[k_, q_, sm : {_List, _List, _List}] := Thread @ Unevaluated @ Y2[k, q, sm] Now: Y2[k, q, lst] > {bar[q, r3, foo[k, r1, r2]], > bar[q, θ3, foo[k, θ1, θ2]], > bar[q, ϕ3, foo[k, ϕ1, ϕ2]]} Note that you cannot do this externally (without the definition above) because `lst` is atomic within the unevaluated expression, therefore there is nothing to thread over: ClearAll[Y2] Y2[k_, q_, {r_, θ_, ϕ_}] := bar[q, ϕ, foo[k, r, θ]] Thread @ Unevaluated @ Y2[k, q, lst] > bar[q, {ϕ1, ϕ2, ϕ3}, foo[k, {r1, r2, r3}, {θ1, θ2, θ3}]] To make that work you would need to insert the evaluated form of `lst` into the expression, e.g.: With[{lst = lst}, Thread @ Unevaluated @ Y2[k, q, lst] ] > {bar[q, r3, foo[k, r1, r2]], > bar[q, θ3, foo[k, θ1, θ2]], > bar[q, ϕ3, foo[k, ϕ1, ϕ2]]} Reference: - http://mathematica.stackexchange.com/q/7756/121