Tengo una lista simple, siempre consecutivos ordenados así:¿Cómo elimino un rango (subsección) de una lista en Python?
all = [ 1, 2, 3, 4, 5, 6 ] # same as range(1, 7)
también tienen current = 4
. Al final quiero la lista all
a este aspecto
altered = [ 1, 2, 5, 6 ]
Así que lo que ocurrió fue que se elimine el número current
y la anterior3
.
current
también puede ser 1
y 0
, por lo que quiero asegurarme de que no arroje un error para esos dos valores.
Para la excepción current = 0
, la lista es alterada como esto
altered = [ 1, 2, 3, 4, 5 ]
Lo que significa que current = 0
simplemente elimina el último número.
Creo que probablemente pueda codificar algo elegante con generadores, pero me da pena escribirlos.
¡Gracias de antemano!
Puntos de bonificación por hacer esto en una sola línea. Si el current = 0
es demasiado problema, entonces también podría ser current = -1
o current = 7
.
EDIT: Asegúrese de comprobar si hay current = 1
, que debe ser
altered = [ 2, 3, 4, 5, 6 ]
Cuando == corriente 4 es el 4 eliminado de la lista, ya que tiene el valor de 4 o porque está en la cuarta posición (cuando se cuenta desde uno)? Del mismo modo, ¿se eliminó el 3 porque es el número más pequeño menor que 4, o porque está en el índice que precede al elemento eliminado? – thebjorn
La lista siempre es un 'rango()' por lo que no importa si lo mira como una posición o valor. – hobbes3
No llame a sus listas 'all' ya que hay una función incorporada' all() 'y eso elimina el acceso una vez que usa el nombre. – jamylak