On Jun 15, 12:52 pm, Ping <[EMAIL PROTECTED]> wrote: > On 6 15 , 11 17 , Dustan <[EMAIL PROTECTED]> wrote: > > > > > On Jun 15, 9:15 am, Ping <[EMAIL PROTECTED]> wrote: > > > > > sum(1 for i in a_list if a_callable(i)) > > > > > -- > > > > Carsten Haesehttp://informixdb.sourceforge.net > > > > This works nicely but not very intuitive or readable to me. > > > > First of all, the generator expression makes sense only to > > > trained eyes. Secondly, using sum(1 ...) to mean count() > > > isn't very intuitive either. > > > Then wrap it in a function: > > def count(a_list, a_function): > > return sum(1 for i in a_list if a_function(i)) > > > And call the function. You can also give it a different name (although > > I can't think of a concise name that would express it any better). > > Hmm... This sounds like the best idea so far. It is efficient both > in memory and time while exposes an easy-to-understand name. > I would name the function count_items though. > > n = count_items(a_list, lambda x: x > 3) # very readable :)
Although that particular example would be more efficient inlined, because of the additional time spent creating the lambda function in your count_items call. sum(1 for i in a_list if i > 3) -- http://mail.python.org/mailman/listinfo/python-list