def find_first(ol, test_func, *args):
    """
        from elist.elist import *
        def test_func(ele,x):
            cond = (ele > x)
            return(cond)
        
        ol = [1,2,3,4]
        first = find_first(ol,test_func,3)
        first
        #####
        ol = [10,20,30,40]
        first = find_first(ol,test_func,3)
        first
        ####find is the same as find_first
    """
    length = ol.__len__()
    for i in range(0, length):
        cond = test_func(ol[i], *args)
        if cond:
            return {'index': i, 'value': ol[i]}
        else:
            pass
    return {'index': None, 'value': None}
