Python: chicos, quiero saber por qué el siguiente código no pudo modificar la lista en orden inverso. Obtengo [8, 7, 6, 5, 5, 6,

CorePress2024-01-24  9

Esta pregunta ya tiene respuestas aquí: ¿Cómo invierto una lista o la recorro hacia atrás?

(37 respuestas)

Cerrado

hace 2 años

.
x = [1, 2, 3, 4, 5, 6, 7, 8]

for num in range(len(x)):  
    x[num] = x[-(num + 1)]
print(x)

Chicos, quiero saber por qué el código anterior no pudo modificar la lista en orden inverso. Obtengo [8, 7, 6, 5, 5, 6, 7, 8] cuando ejecuto el código. Por favor amablemente ayuda

4

Estás sobrescribiendo la lista mientras la iteras. Imprime x en cada iteración y verás.

-AKX

26/03/2021 a las 20:05

2

Lea Cómo preguntar. El título de tu pregunta es simplemente horrible.

- John Coleman

26/03/2021 a las 20:08

Como nuevo usuario aquí, también realice el recorrido.

- Ulrich Eckhardt

26/03/2021 a las 20:11

¿Por qué no das x = x[::-1] y ves lo que obtienes? También publiqué el enlace a la pregunta duplicada. Vea el enlace para más detalles

- Joe Ferndz

26/03/2021 a las 20:13

porque lo inviertes dos veces

 juanpa.arrivillaga

26/03/2021 a las 20:22



------------------------------------

Para invertir la cadena, todo lo que necesita hacer es mylist.reverse() o mylist[::-1]. Para obtener más detalles sobre esto, consulte la respuesta de Stack Overflow del año pasado.

x = [1, 2, 3, 4, 5, 6, 7, 8]

x = x[::-1]

Lista original:

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

Lista actualizada:

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



------------------------------------

Estás reemplazando los valores existentes y luego volviendo a recorrerlos. Lo que quieres usar es el método inverso.

x = [1, 2, 3, 4, 5, 6, 7, 8]
x.reverse()
print(x)

2

1

Quieren revertirlo, no ordenarlo.

- bereal

26/03/2021 a las 20:10

@bereal ah, creo que tienes razón. No pude saberlo después de que usaron "for num in range(len(x))". Gracias

Coberturas de testamento

26/03/2021 a las 20:17

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare