<div dir="ltr">Good call. Is it any faster to initialize Counter with a dict comprehension?<div><br><div>return Counter({k: v*scalar for (k, v) in self.items()) <br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Apr 15, 2018 at 5:05 PM, Peter Norvig <span dir="ltr"><<a href="mailto:peter@norvig.com" target="_blank">peter@norvig.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">For most types that implement __add__, `x + x` is equal to `2 * x`. <div><br></div><div>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.  </div><div><br></div><div>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.  </div><div><br></div><div>Here's an implementation:<div><br></div><div><div><font face="monospace">    def __mul__(self, scalar): </font></div><div><font face="monospace">        "Multiply each entry by a scalar."</font></div><div><font face="monospace">        result = Counter()</font></div><div><font face="monospace">        for key in self:</font></div><div><font face="monospace">            result[key] = self[key] * scalar</font></div><div><font face="monospace">        return result</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">    def __rmul__(self, scalar): </font></div><div><font face="monospace">        "Multiply each entry by a scalar."</font></div><div><font face="monospace">        result = Counter()</font></div><div><font face="monospace">        for key in self:</font></div><div><font face="monospace">            result[key] = scalar * self[key] </font></div><div><font face="monospace">        return result</font></div></div></div></div>
<br>______________________________<wbr>_________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org">Python-ideas@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-ideas" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-ideas</a><br>
Code of Conduct: <a href="http://python.org/psf/codeofconduct/" rel="noreferrer" target="_blank">http://python.org/psf/<wbr>codeofconduct/</a><br>
<br></blockquote></div><br></div>