Iterating through set

Roy Smith roy at panix.com
Mon Jul 14 20:30:52 EDT 2014


In article <d70b2c77-d3d5-42f8-9c8e-d25ef78b3963 at googlegroups.com>,
 LJ <luisjosenovoa at gmail.com> wrote:

> Hi All.
> 
> I'm coding a Dynamic Programming algorithm to solve a network flow problem. 
> At some point in the algorithm I have to iterate through a set of nodes, 
> while adding and/or removing elements, until the set is empty. I know a 
> regular set() object does not work in a case like this, so I wonder if anyone 
> knows of an efficient pythonic way to handle this.


You've already figured out that you can't alter a set while you're 
iterating over it.  Which means you basically have two choices:

1) Build a new set while you're iterating over the first one, then 
delete the first set.  This might make sense if you expect there will be 
a large number of items (relative to the size of the original set) added 
or deleted.

2) Keep lists, of those items which need adding or deleting, and do them 
in bulk, after the iteration is completed.  Then, delete the lists.  
This makes sense if you expect the number of add/deletes will be small.

Either way is O(n) in the size of the set, so which you pick is a 
second-order optimization.



More information about the Python-list mailing list