es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Aquí tienes una traducción al español de la frase “list reverse slicing excludes 1st item” en formato de código Python: “`python # Rebanado inverso de una lista excluyendo el primer elemento lista = [1, 2, 3, 4, 5] rebanado_inverso = lista[::-1][1:] # Excluye el primer elemento print(rebanado_inverso) “` Esta traducción implica que tenemos una lista y queremos realizar un rebanado inverso de la lista excluyendo el primer elemento. En el código proporcionado, la variable “lista” representa la lista original, y “rebanado_inverso” representa el resultado del rebanado inverso excluyendo el primer elemento. Finalmente, se muestra en pantalla el contenido de “rebanado_inverso”.

Me gustaría recorrer una lista en orden inverso utilizando slices de la lista, pero tengo dificultades para obtener el primer elemento (índice 0) de la lista en la salida.

l=[0,1,2,3,4,5,6]
s=len(l)

for i in range(s):
    print(l[s:i:-1])

La salida no incluye el primer elemento de la lista:

 [6, 5, 4, 3, 2, 1]
 [6, 5, 4, 3, 2]
 [6, 5, 4, 3]
 [6, 5, 4]
 [6, 5]
 [6]
 []

Parece ser solo un problema de desplazamiento, pero i-1 no funciona como un índice cuando i=0.

Hasta ahora, la única solución que pude encontrar es poco elegante:

l=[0,1,2,3,4,5,6]
s=len(l)

for i in range(s):
    if i == 0:
        print(l[s::-1])
    else:
        print(l[s:i-1:-1])

Salida (lo que realmente quería):

 [6, 5, 4, 3, 2, 1, 0]
 [6, 5, 4, 3, 2, 1]
 [6, 5, 4, 3, 2]
 [6, 5, 4, 3]
 [6, 5, 4]
 [6, 5]
 [6]

Para mí, parece un error de diseño en Python, ya que en un slice invertido no hay otra forma de obtener el primer elemento de la lista que dejar el campo vacío, lo cual es un problema cuando tienes una variable allí… Dime cómo hacerlo mejor.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, puedo sugerir que puedes utilizar la función integrada reversed() en Python para invertir la lista en orden inverso sin problemas con los índices. Aquí tienes un ejemplo:

    l = [0,1,2,3,4,5,6]
    
    for i in reversed(l):
        print(i)
    

    Salida:

    6
    5
    4
    3
    2
    1
    0
    

    De esta manera, no necesitas preocuparte por los índices o cambiar la lista. También puedes convertir el objeto invertido en una lista si es necesario:

    l_invertida = list(reversed(l))
    print(l_invertida)
    

    Salida:

    [6, 5, 4, 3, 2, 1, 0]
    

Comments are closed.