list of functions question

V

val bykoski

Hi The List:
I have a modeling app where i'm detecting events (in temporal
dynamics) applying a set of (boolean) functions - kind of:

event_list = "f1 f2 etc".split() # each fi detects a specific event
i have defs for functions fi, or simple boolean expressions for each, so
that evList is a list of defs or boolean expressions
for ev in evList:
if ev: # this supposedly is a call ev(t)
# doing smth with the event

I didn't succeed, though, (blindly) trying various options.
I thought/tried "apply()" but couldn't get it work.
I'd appreciate pointers to how to handle this kind of
functions or events lists (or objects?) and how to call those
functions in a loop.
thanks,val
 
T

Tim Roberts

val bykoski said:
Hi The List:
I have a modeling app where i'm detecting events (in temporal
dynamics) applying a set of (boolean) functions - kind of:

event_list = "f1 f2 etc".split() # each fi detects a specific event
i have defs for functions fi, or simple boolean expressions for each, so
that evList is a list of defs or boolean expressions
for ev in evList:
if ev: # this supposedly is a call ev(t)
# doing smth with the event

I didn't succeed, though, (blindly) trying various options.
I thought/tried "apply()" but couldn't get it work.
I'd appreciate pointers to how to handle this kind of
functions or events lists (or objects?) and how to call those
functions in a loop.

If you hadn't tried the string shortcut, it would have worked:

event_list = [f1, f2, etc]

As it is, event_list is a list of strings, not a list of functions.

Then, when you want to call it, remember that it has to be treated like a
function:

for ev in event_list:
if ev(t):
pass

If you REALLY need the list of functions to come from a string, you can
also do:

event_list = [eval(f) for f in "f1 f2 etc".split()]
 
J

John Machin

Hi The List:
I have a modeling app where i'm detecting events (in temporal
dynamics) applying a set of (boolean) functions - kind of:

event_list = "f1 f2 etc".split() # each fi detects a specific event
i have defs for functions fi, or simple boolean expressions for each, so
that evList is a list of defs or boolean expressions
for ev in evList:
if ev: # this supposedly is a call ev(t)
# doing smth with the event

I didn't succeed, though, (blindly) trying various options.
I thought/tried "apply()" but couldn't get it work.
I'd appreciate pointers to how to handle this kind of
functions or events lists (or objects?) and how to call those
functions in a loop.
thanks,val

This may be something like what you are trying to achieve:

# untested
def fx(arg):
pass
def fy(arg):
pass
def fdefault(arg):
pass

funcmap = {
'x1': fx,
'x2': fx,
'y' : fy,
}

eventlist = "y x2 x2 x1 y".split()
for ev in eventlist:
efunc = funcmap.get(ev, fdefault)
if efunc(t): # what is t????
# do something
 
K

Kent Johnson

val said:
Hi The List:
I have a modeling app where i'm detecting events (in temporal
dynamics) applying a set of (boolean) functions - kind of:

event_list = "f1 f2 etc".split() # each fi detects a specific event
i have defs for functions fi, or simple boolean expressions for each, so
that evList is a list of defs or boolean expressions
for ev in evList:
if ev: # this supposedly is a call ev(t)
# doing smth with the event

# Make a list of the actual functions, not their names
# For the events that are expressions, encapsulate them in functions
event_list = [f1, f2, etc]

# Call each one:
for ev in event_list:
if ev(t):
# do something

Kent
 
V

val

John said:
This may be something like what you are trying to achieve:

# untested
def fx(arg):
pass
def fy(arg):
pass
def fdefault(arg):
pass

funcmap = {
'x1': fx,
'x2': fx,
'y' : fy,
}

eventlist = "y x2 x2 x1 y".split()
for ev in eventlist:
efunc = funcmap.get(ev, fdefault)
if efunc(t): # what is t????
# do something

John,
Thanks alot. It does work with the fx, fy,etc as (boolean)
expressions.
And it is faster vs. using defs.
Thanks again, the great list...
Val
 
V

val

Hi Kent,
Thanks. Great help. It does work now,
and with expressions as well.
my very best,
Val
 
V

val

Tim,
Greatly appreciate your help. You are right - the functions work
from the list; i don't actually need the string with events.
Thanks again - great list and great people...
Val
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,294
Messages
2,571,511
Members
48,200
Latest member
SCPKatheri

Latest Threads

Top