Debe hacer esto en un bucle, no hay una operación incorporada para eliminar varios índices a la vez.
Su ejemplo es en realidad una secuencia contigua de índices, por lo que se puede hacer esto:
del my_list[2:6]
que elimina el corte a partir de las 2 y termina justo antes de las 6.
No está claro a partir su pregunta si, en general, necesita eliminar una colección arbitraria de índices, o si siempre será una secuencia contigua.
Si usted tiene una colección arbitraria de índices, a continuación:
indexes = [2, 3, 5]
for index in sorted(indexes, reverse=True):
del my_list[index]
Tenga en cuenta que es necesario eliminar en orden inverso de manera que usted no deshacerse de los índices posteriores.
+1 ¿Cómo esta diferente si en vez de 'del my_list [índice]' 'utilizamos my_list.pop (índice)'? ¿Importa? En términos de eficiencia o semántica? – Levon
Disculpe mi comentario, estoy aprendiendo Python, ¿pero Python reindexa la matriz mientras bucle para eliminar? ¿Por qué si haces un bucle en orden normal, genera una excepción de desplazamiento indefinido? – kitensei
@kitensei Hace reindexar, pero como ordena los índices en orden inverso primero, lo estamos eliminando del extremo derecho de la lista, por lo que nunca reindexamos un elemento antes de eliminarlo. –