Eliminar elemento de la lista en Python mientras itera sobre él [duplicado]

Esta pregunta ya tiene una respuesta aquí:

¿Cómo eliminar elementos de una lista mientras se itera? 23 respuestas

Estoy escribiendo un algoritmo round robin para una aplicación de torneo.

Cuando el número de jugadores es impar, agrego'DELETE' a la lista de jugadores, pero más tarde, cuando quiero eliminar todos los elementos de la lista de programación que contienen'DELETE', No puedo, siempre queda uno. Eche un vistazo al código: el problema es simple y supongo que se trata de listas; Simplemente no puedo verlo.

"""
Round-robin tournament:
1, 2, 3, 4, | 5, 6, 7, 8    =>  1, 2, 3, 4  => rotate all but 1 =>  1, 5, 2, 3  => repeat =>    1, 6, 5, 2  ...
                    5, 6, 7, 8              6, 7, 8, 4          7, 8, 4, 3
in every round pick l1[0] and l2[0] as first couple, after that l1[1] and l2[1]...
"""

import math

lst = []
schedule = []
delLater = False

for i in range(3):                  #make list of numbers
    lst.append(i+1)

if len(lst) % 2 != 0:               #if num of items is odd, add 'DELETE'
    lst.append('DELETE')
    delLater = True


while len(schedule) < math.factorial(len(lst))/(2*math.factorial(len(lst) - 2)): #!(n)/!(n-k)

    mid = len(lst)/2

    l1 = lst[:mid]
    l2 = lst[mid:]

    for i in range(len(l1)):            
        schedule.append((l1[i], l2[i]))         #add lst items in schedule

    l1.insert(1, l2[0])             #rotate lst
    l2.append(l1[-1])
    lst = l1[:-1] + l2[1:]


if delLater == True:                #PROBLEM!!! One DELETE always left in list
    for x in schedule:
        if 'DELETE' in x:
            schedule.remove(x)

i = 1
for x in schedule:
    print i, x
    i+=1

Respuestas a la pregunta(4)

Su respuesta a la pregunta