<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>