擅长:python、mysql、java
<p>这完全取决于你删除了多少元素。在</p>
<p>在CPython中,<code>list</code>类型使用动态过度分配策略,以避免过于频繁地调整底层C数组的大小。有一个<code>array</code>来保存元素,并且它始终保持稍微过大。在</p>
<p>然后删除(使用<code>del TruncList[-n:]</code>)<strong>可以</strong>实际上是一个自由操作,前提是{<cd4>}足够小。事实上,在调整大小之前,您可以安全地删除超过分配数组大小的一半。调整大小需要跨所有现有引用复制到新数组。在</p>
<p>使用一个切片是<em>总是</em>创建新的列表对象,需要分配内存并跨所涉及的元素进行复制。这比重新分配数据稍微多一些。在</p>
<p>因此,如果不测量时间性能(使用<code>timeit</code>),我希望<code>del</code>选项比切片更快;在<code>n < len(TruncList) // 2</code>(小于长度的一半)的情况下,很多情况下甚至不需要调整大小,即使这样做,所需的工作量也会稍微减少,因为只需重新创建内部数组。在</p>
<p>你总是要从前面的元素中移除元素。这样一来,差异就不会很明显了,但是创建一个切片仍然会导致分配给一个全新的对象。在</p>