¿Cómo cortar una lista desde un elemento n hasta el final en python?
Pregunta
Tengo problemas para descubrir cómo cortar listas de Python, se ilustra de la siguiente manera:
>>> test = range(10)
>>> test
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> test[3:-1]
[3, 4, 5, 6, 7, 8]
>>> test[3:0]
[]
>>> test[3:1]
[]
>>> test
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Según tengo entendido, python slice significa lst [inicio: fin] e incluye inicio, excluye fin. Entonces, ¿cómo haría para encontrar el "resto"? de una lista a partir de un elemento n?
¡Muchas gracias por toda su ayuda!
Solución
Puede dejar abierto un extremo del segmento sin especificar el valor.
test[3:] = [3, 4, 5, 6, 7, 8, 9]
test[:3] = [0, 1, 2]
Otros consejos
Si está usando una variable como punto final del rango, puede usar Ninguno
.
start = 4
end = None
test[start:end]
Simplemente omita el final.
test[n:]
Dejar el final todavía funciona cuando quieres omitir algunos:
range(10)[3::2] => [3, 5, 7, 9]
Devuelve una porción de la lista después de un valor inicial:
list = ['a','b','c','d']
start_from = 'b' # value you want to start with
slice = list[list.index(start_from):] # returns slice from starting value to end
También puede usar el Ninguno
palabra clave para el parámetro end al segmentar. Esto también devolvería los elementos hasta el final de la lista (o cualquier secuencia como tupla, cadena, etc.)
# for list
In [20]: list_ = list(range(10))
In [21]: list_[3:None]
Out[21]: [3, 4, 5, 6, 7, 8, 9]
# for string
In [22]: string = 'mario'
In [23]: string[2:None]
Out[23]: 'rio'
# for tuple
In [24]: tuple_ = ('Rose', 'red', 'orange', 'pink', 23, [23, 'number'], 12.0)
In [25]: tuple_[3:None]
Out[25]: ('pink', 23, [23, 'number'], 12.0)