列表比较以返回python中不同元素的标题值

列表比较以返回python中不同元素的标题值,python,Python,这是有关的 由于我的嵌套循环效率不高,我尝试了那篇文章中给出的建议 seen=set() def pairs(LoT): while LoT: f=LoT.pop(0) for e in LoT: se=frozenset([f, e]) if se not in seen: seen.add(se) yield se m = [[list_

这是有关的

由于我的嵌套循环效率不高,我尝试了那篇文章中给出的建议

seen=set()
def pairs(LoT):
    while LoT:
        f=LoT.pop(0)
        for e in LoT:
            se=frozenset([f, e])
            if se not in seen:
                seen.add(se)
                yield se


m = [[list_attr[i] for i, t in enumerate(zip(*pair)) if t[0]!=t[1]] for pair in pairs(rows)]

skt = set(frozenset(temp) for temp in m)
但是,我在使用这种方法时遇到了内存错误,有人能帮我一下吗

    skt = set(frozenset([list_attr[i] for i, t in enumerate(zip(*pair)) if t[0]!=t[1]]) for pair in pairs(rows))
  File "C:*******Rough.py", line 139, in pairs
    seen.add(se)
MemoryError 

为什么你会认为这是一个全球对外的定义?您的数据集有多大?你多久打一次电话给巴黎?嗨。我的数据集有50k条记录,每条记录有15个元素。因为我有50k条记录,我想将每条记录与所有其他记录进行比较,我想我会有50k个阶乘对。然后,seen正在创建一个我想要作为输出的集合。我认为seen将只有50k^2条记录,但这可能足以阻塞您的内存。然而,你需要被看见吗?您的迭代方法似乎可以防止任何重复对,除非原始列表中有重复的元素。在if中添加一个else,看看它是否执行过。谢谢。我会的。对于我的要求,还有其他更有效的方法吗?另外,您是否尝试过itertools.compositions?还有,你可以让我做一个发电机。。。而不是[…],并将其传递到下面的设置,以便在筛选出重复项之前不会展开所有对。