Is there something similar to ?: operator (C/C++) in Python?

Ron Adam rrr at
Sun Jun 19 20:15:56 CEST 2005

Bo Peng wrote:
> Roy Smith wrote:
>> Can you give us some idea of what it is that you're trying to do?  It 
>> pretty unusual to see a requirement like that.
> def func(type_of_obj1, type_of_obj2, .....):
>   callfunc( [
>     type_of_obj1 and obj1a() or obj1b(),
>     type_of_obj2 and obj2a() or obj2b(),
>     ....
>     ])
> callfunc can take arbitrary number of objects whose types are determined 
> by type_of_obj1 etc. I was using a bunch of if/else to create objects 
> and pass them to callfunc.
> Since type_of_obj1 etc are usually binary and obj1a() etc will never be 
> false, the and/or solution does not look so bad in this case.
> Thanks.
> Bo

Are you matching the order to the obj_type?

objlist = [ (type_obj1, obj1a, obj2b),
             (typ_obj2, obj2a, obj2b),

objs = [type_of_obj1, type_of_obj2, etc...]

for n in range(len(objs)):
     if objs[n] == objlist[n][0]:

What significance does the order have?

You might be able to use a dictionary of tuples.

call_obj = {(type_obj1,0):obj1a,
             etc... }

Regards, Ron

More information about the Python-list mailing list