擅长:python、mysql、java
<p>如果您的值不可散列,那么使用<code>set</code>就没有<em>点</em>。在</p>
<p>只需使用<code>list</code>。如果您的对象所能做的就是测试是否相等,那么您必须每次扫描每个元素来测试成员资格。<code>obj in listvalue</code>正是这样做的,扫描列表直到找到相等匹配:</p>
<pre><code>if not someobj in somelist:
somelist.append(someobj)
</code></pre>
<p>会给你一个“唯一”值的列表。在</p>
<p>是的,这将比集合慢,但是集合只能通过散列实现O(1)复杂度<em>。在</p>
<p>如果您的对象是<em>可排序的</em>,那么您可以通过使用<a href="http://docs.python.org/2/library/bisect.html" rel="nofollow noreferrer">^{<cd4>} module</a>将测试降低到O(logn)复杂度来加快操作速度。确保使用从对分测试中收集到的信息插入新值以保持顺序。在</p>