def lists_eq(list1, list2):
    """ recursive """
    if len(list1) != len(list2):
        return False
    for count, (item1, item2) in enumerate(zip(list1, list2)):
        if isinstance(item1, np.ndarray) or isinstance(item2, np.ndarray):
            failed = not np.all(item1 == item2)  # lists_eq(item1, item2)
        else:
            failed = item1 != item2
        if failed:
            return False
    return True