def array_dualmap(ol,value_map_func,**kwargs):
def get_self(obj):<EOL><INDENT>return(obj)<EOL><DEDENT>if('<STR_LIT>' in kwargs):<EOL><INDENT>index_map_func_args = kwargs['<STR_LIT>']<EOL><DEDENT>else:<EOL><INDENT>index_map_func_args = []<EOL><DEDENT>if('<STR_LIT>' in kwargs):<EOL><INDENT>value_map_func_args = kwargs['<STR_LIT>']<EOL><DEDENT>else:<EOL><INDENT>value_map_func_args = []<EOL><DEDENT>if('<STR_LIT>' in kwargs):<EOL><INDENT>index_map_func = kwargs['<STR_LIT>']<EOL><DEDENT>else:<EOL><INDENT>index_map_func = get_self<EOL><DEDENT>length = ol.__len__()<EOL>il = list(range(<NUM_LIT:0>,length))<EOL>nil = list(map(lambda ele:index_map_func(ele,*index_map_func_args),il))<EOL>nvl = []<EOL>for i in range(<NUM_LIT:0>,length):<EOL><INDENT>ele = ol[i]<EOL>v = value_map_func(nil[i],ele,*value_map_func_args)<EOL>nvl.append(v)<EOL><DEDENT>return(nvl)<EOL>
from elist.elist import *
ol = ['a','b','c','d']
def index_map_func(index,prefix,suffix):
    s = prefix +str(index+97)+ suffix
    return(s)

def value_map_func(mapped_index,ele,prefix,suffix):
    s = prefix+mapped_index+': ' + str(ele) + suffix
    return(s)

####
rslt = array_dualmap2(ol,index_map_func=index_map_func,index_map_func_args=[': ',' is '],value_map_func=value_map_func,value_map_func_args=['ord',' yes?'])
pobj(rslt)