Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #74641
| From | Thomas Rachel <nutznetz-0c1b6768-bfa9-48d5-a470-7603bd3aa915@spamschutz.glglgl.de> |
|---|---|
| Newsgroups | comp.lang.python |
| Subject | Re: Iterating through set |
| Date | 2014-07-17 15:22 +0200 |
| Organization | A not so newly installed InterNetNews server |
| Message-ID | <lq8nlr$hhl$1@r01.glglgl.de> (permalink) |
| References | <d70b2c77-d3d5-42f8-9c8e-d25ef78b3963@googlegroups.com> |
Am 15.07.2014 02:10 schrieb LJ:
> 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.
>
> Thanks in advance!
>
This sounds like you want to avoid processing of an item as soon as it
is removed.
Then I'd suggest the following:
add = set()
remove = set()
while myset or add:
for item in myset:
if item not in remove:
# process
myset -= remove
myset += add
remove.clear()
add.clear()
Adding happens via add.add(item), removing via remove.add(item).
If there is additionally the need to take care in which order to apply
add/remove, or if it can happen that item X is added and removed in the
same loop run, it gets a bit more complicated.
Then adding would be like
if item in remove:
remove.remove(item)
elif item not in myset and item not in add:
add.add(item)
and removing like
if item in add:
add.remove(item)
elif item in myset:
remove.add(item)
HTH,
Thomas
Back to comp.lang.python | Previous | Next — Previous in thread | Find similar | Unroll thread
Iterating through set LJ <luisjosenovoa@gmail.com> - 2014-07-14 17:10 -0700 Re: Iterating through set Roy Smith <roy@panix.com> - 2014-07-14 20:30 -0400 Re: Iterating through set Chris Kaynor <ckaynor@zindagigames.com> - 2014-07-14 18:08 -0700 Re: Iterating through set Thomas Rachel <nutznetz-0c1b6768-bfa9-48d5-a470-7603bd3aa915@spamschutz.glglgl.de> - 2014-07-17 15:22 +0200
csiph-web