Python - Posición de un elemento en su última aparición dentro de una lista

 
Vista:
Imágen de perfil de Lissette
Val: 43
Ha disminuido su posición en 3 puestos en Python (en relación al último mes)
Gráfica de Python

Posición de un elemento en su última aparición dentro de una lista

Publicado por Lissette (14 intervenciones) el 20/08/2020 22:03:30
Hola! si tengo una lista [1,2,3,2,5] y quiero saber la posición en que está el 2, pero no la primera vez que aparece sino la última, cómo lo puedo hacer ?

Hasta ahora tengo este código que me devuelve la posición del elemento la primera vez que se lo encuentra.
Muchas gracias!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
```
def buscar_u_elemento(lista, u):
     pos= -1
     for i, z in enumerate(lista):
         if z==u:
             pos= i
             break
     return pos
 
buscar_u_elemento([1,2,3,2,3,4],1)
buscar_u_elemento([1,2,3,2,3,4],2)
buscar_u_elemento([1,2,3,2,3,4],3)
buscar_u_elemento([1,2,3,2,3,4],5)
```
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
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 110
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Posición de un elemento en su última aparición dentro de una lista

Publicado por JOSE JEREMIAS CABALLERO (26 intervenciones) el 21/08/2020 06:49:27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def buscar_u_elemento(lista, u):
  P=[]
  for j  in range(len(lista)):
     P.append(len(lista))
  v=0
  for i, z in enumerate(lista):
    if z==u:
      P[v]= i+1
      v=v+1
  V=[]
  for j  in range(v):
     V.append(v)
  for j in range(v):
      V[j]=P[j]
  if len(V)>=1:
      return V[len(V)-1]
  else:
     return -1
 
 
print(buscar_u_elemento([1,2,3,2,3,4],1))
print(buscar_u_elemento([1,2,3,2,3,4],2))
print(buscar_u_elemento([11,13,3,72,3,93,3,3,9, 9],3))
print(buscar_u_elemento([1,2,3,2,3,4],5))


1
2
3
4
5
E:\PYTHON 2020>python ejecutar.py
1
4
8
-1
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
Imágen de perfil de Lissette
Val: 43
Ha disminuido su posición en 3 puestos en Python (en relación al último mes)
Gráfica de Python

Posición de un elemento en su última aparición dentro de una lista

Publicado por Lissette (14 intervenciones) el 21/08/2020 11:09:53
Gracias por la respuesta, pero me podrías explicar un poco la resolución ? qué estaba haciendo mal en mi código? estoy empezando y no quiero simplemente copiar y pegar tu resolución.

Mil gracias!
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
Imágen de perfil de Lissette
Val: 43
Ha disminuido su posición en 3 puestos en Python (en relación al último mes)
Gráfica de Python

Posición de un elemento en su última aparición dentro de una lista

Publicado por Lissette (14 intervenciones) el 21/08/2020 11:29:52
Lo probé el código, pero no me da lo que necesito, creo que me expliqué mal. Lo que requiero es que la salida sea así:

1
2
3
4
5
6
7
8
>>> buscar_u_elemento([1,2,3,2,3,4],1)
0
>>> buscar_u_elemento([1,2,3,2,3,4],2) #devuelve la posición en que aparece por última vez el número 2
3
>>> buscar_u_elemento([1,2,3,2,3,4],3)
4
>>> buscar_u_elemento([1,2,3,2,3,4],5) #cuando el elemento no está en la lista devuelve -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
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 110
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Posición de un elemento en su última aparición dentro de una lista

Publicado por JOSE JEREMIAS CABALLERO (26 intervenciones) el 21/08/2020 15:57:11
Estimado modifique este sentencia
1
P[v]= i+1
por
1
P[v]= i
y le saldrá la respuesta deseada.
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
Imágen de perfil de Lissette
Val: 43
Ha disminuido su posición en 3 puestos en Python (en relación al último mes)
Gráfica de Python

Posición de un elemento en su última aparición dentro de una lista

Publicado por Lissette (14 intervenciones) el 21/08/2020 16:15:02
te agradezco, pero no logro entender bien tu solución y tampoco por qué la mía falla
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
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 110
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Posición de un elemento en su última aparición dentro de una lista

Publicado por JOSE JEREMIAS CABALLERO (26 intervenciones) el 21/08/2020 16:34:54
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
def buscar_u_elemento(lista, u):
 
#1.	Creo un vector P del tamaño de la lista para poder guardar todas las posiciones del número u que buscando
  P=[]
  for j  in range(len(lista)):
     P.append(len(lista))
 
 
 
#2.	Busco las posiciones del número u en la lista y lo guardo en el vector P
  v=0
  for i, z in enumerate(lista):
    if z==u:
      P[v]= i
      v=v+1
 
 
 
#3.	Creo el vector V del tamaño del contador v, porque en v se guarda
#  la cantidad de veces que repite el numero u en la lista
  V=[]
  for j  in range(v):
     V.append(v)
 
 
#4. Almaceno en el vector V las posiciones del numero u en la lista que se encuentran almacenados en el vector P
  for j in range(v):
      V[j]=P[j]
 
 
 
#5. Verifico si la longitud del V es mayor que uno,
# como en Python existe la posición [0] entonces resto -1
  if len(V)>=1:
      return V[len(V)-1]
  else:
#6.  Este  es para retornar un aviso  cuando el numero u buscado no se encuentre en la lista.
     return -1
 
 
print(buscar_u_elemento([1,2,3,2,3,4],1))
print(buscar_u_elemento([1,2,3,2,3,4],2))
print(buscar_u_elemento([11,13,3,72,3,93,3,3,9, 9],3))
print(buscar_u_elemento([1,2,3,2,3,4],5))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 110
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Posición de un elemento en su última aparición dentro de una lista

Publicado por JOSE JEREMIAS CABALLERO (26 intervenciones) el 21/08/2020 17:00:23
A grandes rasgos la explicación.
1. Como en principio el número u que buscamos no se sabe cuántas veces se repite en el vector lista, pero si sabemos que a lo mucho se puede repetir igual a la cantidad de elementos de la lista, por lo tanto, se crea el vector P del mismo tamaño del vector lista.

2. Luego con un bucle for comparamos cada elemento del vector lista con el número u, y si son iguales entonces en el vector P se guarda la posición de este elemento de la lista, pero esa posición es el número i, ya que es un contador que aumenta uno en uno.

3. Ahora creamos otro vector V del tamaño de v , porque en v se almacena la cantidad de veces que repite el número u en el vector lista

4. Ahora las v-primeras posiciones del vector P lo almacenas en el vector V, por lo tanto, V es un vector donde todas las posiciones del número u en el vector lista.

5. El último elemento del vector P, es la posición última del número u que se encuentra en la lista.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 110
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Posición de un elemento en su última aparición dentro de una lista

Publicado por JOSE JEREMIAS CABALLERO (26 intervenciones) el 21/08/2020 17:30:56
Estimado.
Su código que ha hecho lo puede modificar de esta manera, quite el break, porque el break hace que salga del bucle for cuando encuentra por primera vez el número u en el vector lista, y como ud. quiere el último posición del número u en el vector lista, entonces que recorra toda la lista, y su variable pos va estar cambiando de acuerdo que va encontrando nuevas posiciones del número u en el vector lista y al final se va quedar con el último i la cual viene a ser la última posición numero u en el vector lista.

1
2
3
4
5
6
7
8
9
10
11
def buscar_u_elemento(lista, u):
     pos= -1
     for i, z in enumerate(lista):
         if z==u:
            pos= i
     return pos
 
print(buscar_u_elemento([1,2,3,2,3,4],1))
print(buscar_u_elemento([1,2,3,2,3,4],2))
print(buscar_u_elemento([1,2,3,2,3,4],3))
print(buscar_u_elemento([1,2,3,2,3,4],5))

1
2
3
4
5
E:\PYTHON 2020>python ejecutar2.py
0
3
4
-1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Lissette
Val: 43
Ha disminuido su posición en 3 puestos en Python (en relación al último mes)
Gráfica de Python

Posición de un elemento en su última aparición dentro de una lista

Publicado por Lissette (14 intervenciones) el 21/08/2020 18:01:28
Muchísimas gracias! estoy recién empezando en esto y no me quedaba muy claro el uso del break
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

Posición de un elemento en su última aparición dentro de una lista

Publicado por yoyyo (1 intervención) el 21/08/2020 17:46:59
hola:
te muestro otra forma con menos código:

1
2
3
4
5
6
7
8
9
10
lista = [1,2,3,2,3,4]
 
def buscar_u_elemento(lista,x):
    lugar = [i for i,v in enumerate(lista) if v == x]
    if lugar == []:
        return -1
    return lugar[-1]
 
 
print(buscar_u_elemento(lista,2))
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
Imágen de perfil de Lissette
Val: 43
Ha disminuido su posición en 3 puestos en Python (en relación al último mes)
Gráfica de Python

Posición de un elemento en su última aparición dentro de una lista

Publicado por Lissette (14 intervenciones) el 21/08/2020 18:11:43
Hola, muchas gracias por tu respuesta, solo que esta parte del código no la entendí bien
1
lugar = [i for i,v in enumerate(lista) if v == x]
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

Posición de un elemento en su última aparición dentro de una lista

Publicado por yoyyo (1 intervención) el 21/08/2020 19:35:18
es comprensión de listas, lo pongo de la forma más simple:

1
2
3
4
lugar = [] #creamos una lista vacía
for i,v in enumerate(lista): #enumerate crea una tupla con dos valores por lo tanto i es el primero y v el segundo
    if v ==  x: #si el segundo valor es igual al buscado
        lugar.append(i) # agregamos a lista i que es el primer valor
podés usar eso y dará el mismo resultado.
y lo que hicimos fue crear una lista con los valores i

todo eso se resume:
1
lugar = [i for i,v in enumerate(lista) if v == x]

que tambien crea una lista
que es lo mismo escrito de otra forma.
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
Imágen de perfil de Lissette
Val: 43
Ha disminuido su posición en 3 puestos en Python (en relación al último mes)
Gráfica de Python

Posición de un elemento en su última aparición dentro de una lista

Publicado por Lissette (14 intervenciones) el 21/08/2020 19:40:16
Ah perfecto, entiendo. Muchas gracias!!
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