On Jun 16, 3:37 pm, Dustan <[EMAIL PROTECTED]> wrote: > class SmartCountingList(list): > def count(self, item, func=lambda x: x): > return sum(1 for i in self if func(item)==item) > > Then, you would call it as follows: > a_list.count(True, a_function)
I need to learn to think things through before hitting the send button (or test my examples); none of the mistakes I've made on this thread have been from ignorance. If a_function returns a true value other than True or the number 1 (which are technically the same), it is not 'equal' to True. Either the function would return True, or the count method could be written differently: class SmartCountingList(list): def count(self, item, is_func=False): if is_func: # item being a function: return sum(1 for i in self if item(i)) else: return super(SmartCountingList, self).count(item) And just to prove that it works: >>> s = SmartCountingList((1,2,3)) >>> s [1, 2, 3] >>> s.count(1) 1 >>> s.count(2) 1 >>> s.count(3) 1 >>> s.count(4) 0 >>> s.count(lambda n: n<3, True) 2 -- http://mail.python.org/mailman/listinfo/python-list