一般化してみた。

def search(mtx, cmp_v, idx=0):
    if isinstance(mtx, list):
        hitidx = []
        for rowidx,item in enumerate(mtx):
            srchidx = search(item, cmp_v, rowidx)
            if isinstance(item, list):
                tmp = []
                for i in srchidx:
                    if isinstance(i, list):
                        tmp.append([rowidx]+i)
                    else:
                        tmp.append([rowidx]+[i])
                srchidx = tmp
            else:
                srchidx = srchidx
            hitidx = hitidx + srchidx
        return hitidx

    else:
        if callable(cmp_v) and cmp_v(mtx) or cmp_v == mtx:
            return [idx]
        else:
            return []