'Zero out' a matrix using Python
Repetition

I would write only one function to locate zeros:

def locate_zeros(matrix: IntegerMatrix) -&gt; Iterable[Position]:
    """Given an NxM matrix find the positions that contain a zero."""
    for row_num, row in enumerate(matrix):
        for col_num, element in enumerate(row):
            if element == 0:
                yield (col_num, row_num)


And use it in zero_out like this:

    if row_num in (x[1] for x in zeros_positions) or col_num in (x[0] for x in zeros_positions):
        matrix[row_num][col_num] = 0


Type hints

Given that you specifically mentioned Python 3.5 and that you already have something like type hints on your functions, I suggest you go all the way with mypy compatible type hints.

from typing import List, Any,  Iterable, Tuple

Position = Tuple(int, int)
IntegerMatrix = List[List[int]]

def locate_zeros(matrix: IntegerMatrix) -&gt; Iterable[Position]:

def zero_out(matrix: IntegerMatrix) -&gt; IntegerMatrix:


This way you can statically check your code has the correct types like in natively statically types languages and give the user much more detailed information on the types.