<p>不必像您那样检查集合的大小,而是将每个集合也存储在一个集合中(这样可以简化查找)。你知道吗</p>
<p>然后检查是否您已经知道<code>set(x)</code>;如果知道,请跳过它,否则将其放入已知的集合中。你知道吗</p>
<p>要在集合中存储集合,必须使用<code>frozenset</code>而不是<code>set</code>,使内部集合不可变。你知道吗</p>
<p>工作代码:</p>
<pre><code>from itertools import product
list1 = ['Gabe', 'Taylor', 'Kyle', 'Jay']
list2 = ['Gabe', 'Taylor', 'Kyle', 'Jay', 'James', 'John', 'Tyde','Chris', 'Bruno', 'David']
list3 = ['Gabe', 'Taylor', 'Kyle', 'Jay', 'James', 'John', 'Tyde','Chris', 'Bruno', 'David']
list4 = ['Kyle', 'James', 'John', 'Tyde','Bruno', 'Drew', 'Chris']
list5 = ['James', 'John', 'Brendan','Tim', 'Drew' ]
def FindUniques(*lists):
already_seen = set()
result = []
for x in product(*lists):
icicle = frozenset(x)
if icicle not in already_seen:
result.append(x)
already_seen.add(icicle)
return result
final_list = FindUniques(list1, list2, list3, list4, list5)
# make sure that each element in final_list, independent of elemet order, is unique
assert len(final_list) == len(set(tuple(sorted(list(x))) for x in final_list))
# to print
for x in final_list:
print x
</code></pre>