A list comprehension is best for this kind of loop.
somelist = [x for x in somelist if determine(x)]
EDIT:
Jobs' comment says that he wants the 'determine' to say what should be deleted. That would then be just.
somelist = [x for x in somelist if not determine(x)]
EDIT:
somelist[:] = [x for x in somelist if not determine(x)]
Brandon Corfman is correct, you will loose reference to the original list unless you do it this way and please look at Alex Martelli comment for the detail.
Also, I liked Cides' suggestion below using itertools. However there is no non iterator filterfalse, so it will have to be.
from itertools import ifilterfalse
somelist[:] = list(ifilterfalse(determine, somelist))