列表列表中的成对比较花费太长时间

时间:2017-10-23 18:42:36

标签: python performance list search

我有一个列表列表,我们称之为列表,如下所示:

[[Redditor(name='Kyle'), Redditor(name='complex_r'), Redditor(name='Lor')],
[Redditor(name='krispy'), Redditor(name='flyry'), Redditor(name='Ooer'), Redditor(name='Iewee')],
[Redditor(name='Athaa'), Redditor(name='The_Dark_'), Redditor(name='drpeterfost'), Redditor(name='owise23'), Redditor(name='invirtibrit')],
[Redditor(name='Dacak'), Redditor(name='synbio'), Redditor(name='Thosee')]]

该列表包含1000个元素(或列表)。我试图将这些中的每一个与成对的其他列表进行比较,并尝试获取每对列表的公共元素的数量。代码这样做:

def calculate(list1,list2):
    a=0
    for i in list1:
        if (i in list2):
           a+=1
    return a

for i in range(len(thelist)-1):
   for j in range(i+1,len(thelist)):
      print calculate(thelist[i],thelist[j])

我的问题是:根据长度,每个列表对需要2秒或更长时间才能计算函数。我猜,这与我的列表结构有关。我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

首先,我建议您在此处引用您的类hashable:What's a correct and good way to implement __hash__()?

然后,您可以通过执行以下操作使列表列表成为一组:

FormData();

然后你的功能会更快!