Common pitfalls - acroucher/PyTOUGH GitHub Wiki

Deleting generators

Deleting selected generators from a t2data object has to be done a little carefully. If you try to loop over the generator list and delete the generators you don't want, like this:

dat = t2data('mydata.dat')
# this code won't work:
for gen in dat.generatorlist:
  if gen.name.startswith('r'):
    dat.delete_generator((gen.block, gen.name))

it won't work. The reason is that the delete_generator() method is altering the list you are iterating over, which confuses the looping process.

The solution is to first make a separate list of the generators you want to delete, and iterate over that instead of the t2data generator list, e.g.:

del_gens = [(gen.block,gen.name) for gen in dat.generatorlist if gen.name.startswith('r')]
for g in del_gens: dat.delete_generator(g)