For lists, you can use list comprehension or the `map`

function:

```
sage: [M[i] + N[i] for i in xrange(len(M))]
sage: map(operator.add, N, M)
```

For matrices, there is no such mechanism out of the box, but you can make one by yourself as follows:

```
def elementwise(operator, M, N):
assert(M.parent() == N.parent())
nc, nr = M.ncols(), M.nrows()
A = copy(M.parent().zero_element())
for r in xrange(nr):
for c in xrange(nc):
A[r,c] = operator(M[r,c], N[r,c])
return A
```

and then use it as follows:

```
sage: elementwise(operator.add, M, N)
sage: elementwise(operator.pow, M, N)
sage: elementwise(operator.mul, M, N)
sage: elementwise(operator.div, M, N)
```

and so on.