def find_all2(ol, test_func, *args):
    """
        from elist.elist import *
        from elist.jprint import pobj
        def test_func(ele,index,x):
            cond1 = (ele > x)
            cond2 = (index %2 == 0)
            cond = (cond1 & cond2)
            return(cond)

        ol = [1,2,3,4,5,6,7]
        rslt = find_all2(ol,test_func,3)
        pobj(rslt)
    """
    rslt = []
    length = ol.__len__()
    for i in range(0, length):
        cond = test_func(ol[i], i, *args)
        if cond:
            rslt.append({'index': i, 'value': ol[i]})
        else:
            pass
    return rslt
