当数据有点大时,python for循环越来越慢

时间:2014-09-25 15:33:14

标签: python

我想在数据集中相互比较。数据集是一个列表,有20000个成员,然后我的代码如下:

>>index = 0
>>for i in all:
      index += 1
      begin_time = time.time()
      for j in all[index:]:
           ...
           here are some data processing,then make comparison,
           ...
           print time.time()-begin_time

然后随着时间的推移变慢,开始时每个循环需要0.1秒,而在半小时后,每个循环需要大约1秒。 有人说这是由于垃圾收集,但是当我在操作之前添加gc.disable()时,它仍然没有变得更好。 谁能告诉我该怎么办?

1 个答案:

答案 0 :(得分:1)

你的算法是O(n^2),这非常糟糕。 如果可能,请考虑更改算法。

另外,请考虑使用itertools而不是手动组合处理。 它将更具可读性,并且可能比您的方法更有效:

import itertools
for i,j in itertools.product(all, all):
  print i,j