Instead of extending Counter to fit fancier usecases, why not have a new class that is designed for arithmetic?
I, for one, would love Numpy-style list and dict classes in the standard library. And they wouldn't be confusingly called Counter, and have strange behaviors with negative values. I only saw discussion about whether or not we want Counter to support Peter's use, but there isn't much talk of supporting it with a new class. If we can get behind a new class, there wouldn't be as much conflict about what to do with the old one. On Sun, Apr 15, 2018 at 5:05 PM, Peter Norvig <pe...@norvig.com> wrote: > For most types that implement __add__, `x + x` is equal to `2 * x`. > > That is true for all numbers, list, tuple, str, timedelta, etc. -- but not > for collections.Counter. I can add two Counters, but I can't multiply one by > a scalar. That seems like an oversight. > > It would be worthwhile to implement multiplication because, among other > reasons, Counters are a nice representation for discrete probability > distributions, for which multiplication is an even more fundamental > operation than addition. > > Here's an implementation: > > def __mul__(self, scalar): > "Multiply each entry by a scalar." > result = Counter() > for key in self: > result[key] = self[key] * scalar > return result > > def __rmul__(self, scalar): > "Multiply each entry by a scalar." > result = Counter() > for key in self: > result[key] = scalar * self[key] > return result > > _______________________________________________ > Python-ideas mailing list > Python-ideas@python.org > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/ > _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/