How to delete elements while traversing the list in processing.py?

I fail to spot any place on your code where the order of Particle objects in the particle[] list would matter.

Particle::display() method relies on property location for coordinates, not on particle[]'s index:
ellipse(self.location.x, self.location.y, 12, 12)