удаление элементов из списка стоит дорого, так как python должен скопировать все элементы выше g_index вниз на одно место. Если количество элементов, которые вы хотите удалить, пропорционально длине списка N, тогда ваш алгоритм будет равен O (N ** 2). Если список достаточно длинный, чтобы заполнить вашу оперативную память, вы будете ждать его очень долго.
Более эффективно создать отфильтрованную копию списка, либо используя понимание списка, как показывал Марсело, либо используя функции filter или itertools.ifilter:
g_list = filter(not_subtle_condition, g_list)
Если вам не нужно использовать новый список и вы хотите перебирать его только один раз, тогда лучше использовать ifilter, поскольку он не создаст второй список:
for g_current in itertools.ifilter(not_subtle_condtion, g_list):
# do stuff with g_current