On 6/15/07, 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. > > I would still prefer an expression like a_list.count(a_callable), > which is short, clean, and easy to understand. :) However, > it does produce ambiguities if a_list is a list of callables. > Should the count() method match values or check return values > of a_callable? There are several possible designs but I'm not > sure which is better.
Maybe you could extend count() analogous to how sort() works: # L is a list of Person objects, each Person has a name attribute L.sort(key = attrgetter("name")) # How many olle are there? print L.count("olle", key = attrgetter("name")) # And index could be extended in the same way! # Whom has id 1234? print L.index(1234, key = attrgetter("id")).name All of these could be solved by giving Person an __eq__() method, but it fails when you need to search, sort or count on a different key. -- mvh Björn -- http://mail.python.org/mailman/listinfo/python-list