title: Remove items from a list while iterating without using extra memory in Python
body: <p>My problem is simple: I have a long list of elements that I want to iterate through and check every element against a condition. Depending on the outcome of the condition I would like to delete the current element of the list, and continue iterating over it as usual.</p>
  
  <p>I have read a few other threads on this matter. Two solutions seam to be proposed. Either make a dictionary out of the list (which implies making a copy of all the data that is already filling all the RAM in my case). Either walk the list in reverse (which breaks the concept of the alogrithm I want to implement).</p>
  
  <p>Is there any better or more elegant way than this to do it ?</p>
  
  <pre><code>def walk_list(list_of_g):
      g_index = 0
      while g_index &lt; len(list_of_g):
          g_current = list_of_g[g_index]
          if subtle_condition(g_current):
              list_of_g.pop(g_index)
          else:
              g_index = g_index + 1
  </code></pre>