Serhiy Storchaka added the comment: > - in the given patch __add__ uses __iadd__, but __sub__ doesn't use > __isub__, which seems a bit weird.
If Counters are positive (common case), then the result of addition is not less than both summands. a + b is a and may be additional elements from b. In the case of substraction a - b can be less than a and may be much less than a. In this case it is cheaper to create empty Counter and copy only those elements from a that are not in b, than copy all a and then remove almost all elements. Relative efficiency depends on input data, and for some input data implementing __sub__ via __isub__ can be more efficient. > - is there place for a non multi-set centric "Stats" object which is like > Counter but with + and - actually behaving without the (in my use cases of > Counter often counter intuitive) "> 0" stuff? (pun intended ;) ) Counter > feels like a sub-class of Stats with the added _keep_positive(self). I'm sure there is such class in third-party modules. Counter wouldn't have much benefit from inheriting "Stats", because it would need to override almost all methods. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue23509> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com