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!

¿Fue útil?

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)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top