In most languages, like Java, you'd use an iterator. Iterators in java let you remove the current element from the collection without losing your place.
In python, the simplest solution is to iterate backwards, so the shortened list hasn't lost the indices you haven't reached yet.
If the list isn't too large, you could simply reconstruct the list with list comprehension, using its if clause to omit the ones you would have deleted.
selectedFactories = ["north","east"]
prunedInstances = [inst for inst in self.props.instances if inst.Factory in selectedFactories]