擅长:python、mysql、java
<p>我会用这样的检查来做一个集合理解(对于每个项目,检查它是否有至少一个其他元素的公共元素):</p>
<pre><code>data = set([frozenset([1,2,3,4]), frozenset([3,4,5,6,7,8]), frozenset([100,200]), frozenset([1,1000, 2000])])
new_data = {x for x in data if any(not x.isdisjoint(y) for y in data if y!=x)}
print(new_data)
</code></pre>
<p>结果:</p>
<pre><code>{frozenset({1, 2, 3, 4}), frozenset({3, 4, 5, 6, 7, 8}), frozenset({1000, 1, 2000})}
</code></pre>
<p>可能有更有效的解决方案,但至少<code>disjoint</code>部分是由有效的<code>set</code>例程处理的</p>