<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Mar 7, 2017 at 4:36 PM, Erik <span dir="ltr"><<a href="mailto:python@lucidity.plus.com" target="_blank">python@lucidity.plus.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">* listextend() - this should do the right thing with the type hint when extending one list with another.<br></blockquote>
<br>
* Several other methods ('contains', 'remove', 'count', 'index') also use PyObject_RichCompareBool(). They could also presumably benefit from the same optimisation (perhaps it's not all about sort() - perhaps this gives a little more weight to the idea).</blockquote><div><br></div><div>Good point about list.extend().  I don't think __type_hint__ could help with .__contains__() or .count() or .remove().  E.g.:</div><div><br></div></div></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">In [7]: lst = [1.0, 2.0, 1+0j, F(1,1)]</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">In [8]: from fractions import Fraction as F</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">In [9]: lst = [1.0, 2.0, 1+0j, F(1,1)]</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">In [10]: 1 in lst</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">Out[10]: True</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">In [11]: lst.count(1)</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">Out[11]: 3</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">In [12]: l.index(1)</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">Out[12]: 0</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><font face="monospace, monospace"> </font></div></div></div></blockquote><div class="gmail_extra">The list has absolutely nothing of the right type.  Yet it contains an item, counts things that are equal, finds a position for an equal item.<br clear="all"><div><br></div>-- <br><div class="gmail_signature">Keeping medicines from the bloodstreams of the sick; food <br>from the bellies of the hungry; books from the hands of the <br>uneducated; technology from the underdeveloped; and putting <br>advocates of freedom in prisons.  Intellectual property is<br>to the 21st century what the slave trade was to the 16th.<br></div>
</div></div>