title: Is there a way to avoid this memory error?
body: <p>I'm currently working through the problems on Project Euler, and so far I've come up with this code for a problem. </p>
  
  <pre><code>from itertools import combinations
  import time
  
  def findanums(n):
      l = []
      for i in range(1, n + 1):
          s = []
          for j in range(1, i):
              if i % j == 0:
                  s.append(j)
          if sum(s) &gt; i:
              l.append(i)
      return l
  
  start = time.time() #start time
  
  limit = 28123
  
  anums = findanums(limit + 1) #abundant numbers (1..limit)
  print "done finding abundants", time.time() - start
  
  pairs = combinations(anums, 2)
  print "done finding combinations", time.time() - start
  
  sums = map(lambda x: x[0]+x[1], pairs)
  print "done finding all possible sums", time.time() - start
  
  print "start main loop"
  answer = 0
  for i in range(1,limit+1):
      if i not in sums:
          answer += i
  print "ANSWER:",answer
  </code></pre>
  
  <p>When I run this I run into a <code>MemoryError</code>.</p>
  
  <p>The traceback:</p>
  
  <pre><code>File "test.py", line 20, in &lt;module&gt;
      sums = map(lambda x: x[0]+x[1], pairs)
  </code></pre>
  
  <p>I've tried to prevent it by disabling garbage collection from what I've been able to get from Google but to no avail. Am I approaching this the wrong way? In my head this feels like the most natural way to do it and I'm at a loss at this point.</p>
  
  <p>SIDE NOTE: I'm using PyPy 2.0 Beta2(Python 2.7.4) because it is so much faster than any other python implementation I've used, and Scipy/Numpy are over my head as I'm still just beginning to program and I don't have an engineering or strong math background.</p>