擅长:python、mysql、java
<p>除了使用集合的解决方案外,还可以很容易地滚动您自己的比较函数:</p>
<pre><code>In [1]: def undirected_comp(tup1, tup2):
...: return tup1 == tup2 or tup1 == tup2[::-1]
In [2]: undirected_comp(('A','B'), ('B','A'))
Out[2]: True
In [3]: undirected_comp(('A','B'), ('A','C'))
Out[3]: False
In [4]: undirected_comp(('A','B'), ('A','B'))
Out[4]: True
</code></pre>
<p>正如mmdanziger所指出的,这比使用集合的解决方案更快,因为您不必支付创建集合的成本。在</p>
<p>但是如果你关心速度<strong>并且</strong>你花在比较各种边上的时间多于创建它们的时间,那么最好不要将这些边存储为任意顺序的元组,而是预处理并以不同的格式存储它们。两个最好的选择可能是<code>frozenset</code>或排序的元组(即,按照惯例,您总是首先存储最小的节点)。一些快速的时机:</p>
^{pr2}$
<p>因此,假设您不关心边的创建时间,那么将它们存储为已排序的元组是进行比较的最快方法。在这种情况下,您只需要做一个简单的比较,而不必比较向后的情况,因为顺序是由预排序保证的。在</p>