Python - Lista invertida

 
Vista:

Lista invertida

Publicado por John (1 intervención) el 23/04/2019 01:20:44
Hola.
Estoy comenzando con python y estoy tratando de obtener una lista invertida a partir de otra lista previa. Algo como esto:

1
2
3
4
5
6
lista1 = [1,2,3,4,5,6,7,8,9,10]
lista2 = lista1
pos = 0
for i in reversed (lista1):
	lista2[pos] = i
	pos += 1

Pero al imprimir la lista2, obtengo lo siguiente:
[10, 9, 8, 7, 6, 6, 7, 8, 9, 10]

A partir de la quinta posición ya no sigue en orden inverso, sino que se devuelve. Creo que tengo un problema de lógica en el planteamiento del bucle
Estoy trabajando la versión 3.7.2 desde Sublime Text 3. Agradezco su ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 156
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Lista invertida

Publicado por Andrés (55 intervenciones) el 23/04/2019 02:06:01
Se me ocurren tres formas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#modo 1 - manual
def rev_in_place(lista):
    #longitud de la lista
    n = len(lista)
    #punto medio
    medio = n//2
    #O(n) - complejidad
    for i in range(0, medio):
        #guardar  el valor
        tmp = lista[i]
        #intercambiar 
        lista[i] = lista[n-i-1]
        #intercambiar
        lista[n-i-1] = tmp
 
lista1 = [1,2,3,4,5,6,7,8,9,10]
print(lista1)
rev_in_place(lista1)
print(lista1)
 
#modo 2 - built-in function
lista2 = list(range(1,11))
print(lista2)
lista2.reverse()
print(lista2)
 
#modo3 - slicing
lista3 = list(range(1,11))
print(lista3)
print(lista3[-1::-1])
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 3
Ha disminuido su posición en 20 puestos en Python (en relación al último mes)
Gráfica de Python

Lista invertida

Publicado por John (1 intervención) el 23/04/2019 21:57:36
Muchas gracias Andrés.

Me sirvió el modo 2. Sobre todo porque es más sencillo para incluirlo dentro de otras operaciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar