<p>如果您碰巧要求保留订单:</p>
<pre><code>def best_case_iteruniq(iterable, key=None):
memo_hash = set()
memo_else = list()
add_hash = memo_hash.add
add_else = memo_else.append
if key is None:
def predicate(item):
try:
hash(item)
except TypeError:
if item in memo_else:
return False
add_else(item)
return True
else:
if item in memo_hash:
return False
add_hash(item)
return True
else:
def predicate(actual_item):
item = key(actual_item)
try:
hash(item)
except TypeError:
if item in memo_else:
return False
add_else(item)
return True
else:
if item in memo_hash:
return False
add_hash(item)
return True
return filter(predicate, iterable)
</code></pre>
<p>这是我不久前开发的一个lil'工具,它允许您在尽可能短的时间内(假设没有完全有序的非散列元素),同时它还允许<code>key</code>来取消对它们的验证。在</p>
<p>不过,在这种情况下,这几乎肯定是杀伤力太大了。但它在那里,而且是免费的。在</p>