Skip to content

Instantly share code, notes, and snippets.

@hcosta
Created February 15, 2022 11:30
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save hcosta/d60379cab2df4e3c920a76c5ad806194 to your computer and use it in GitHub Desktop.
Save hcosta/d60379cab2df4e3c920a76c5ad806194 to your computer and use it in GitHub Desktop.
# La solución provista es incorrecta debido a lo siguiente:
del( l[i] )
# Al borrar el elemento de la posición actual hay que tener en cuenta que
# la siguiente vez que recorremos la lista, el índice habrá corrido una
# posición pero el número de elementos se habrá reducido y por tanto
# no se borrará el elemento que toca.
# Si en lugar de eliminar los elementos de la lista, generamos una nueva
# lista sólo con los pares, entonces todo se soluciona bien:
def modificar(l):
l = list(set(l)) # Borrar los elementos duplicados (recrea la lista a partir de un nuevo diccionario)
l.sort(reverse=True) # Ordenar la lista de mayor a menor
l_tmp = [] # Lista temporal que contendrá solo los números pares
for n in l:
if n%2 == 0:
l_tmp.append(n)
suma = sum(l_tmp) # Realizar una suma de todos los números que quedan
l_tmp.insert(0, suma) # Añadir como primer elemento de la lista de pares la suma realizada
return l_tmp # Devolver la lista de pares modificada
@hcosta
Copy link
Author

hcosta commented Feb 15, 2022

Otra forma de solucionar este ejercicio es, tomando la solución del vídeo, recorrer la lista del final al principio. De esa manera el índice no se corre, porque vamos recortándolo hacia la izquierda:

def modificar(l):
    
    l = list(set(l))  # Borrar los elementos duplicados (recrea la lista a partir de un nuevo diccionario)
    l.sort(reverse=True)  # Ordenar la lista de mayor a menor
    
    # Eliminar todos los números impares, recorriendo la lista del final al principio <----
    for i in range(len(l))[::-1]:  
        if l[i]%2 != 0:
            del( l[i] )
            
    suma = sum(l)  # Realizar una suma de todos los números que quedan
    l.insert(0, suma)  # Añadir como primer elemento de la lista la suma realizada
    return l  # Devolver la lista modificada

@LuisAntonioGI13
Copy link

Hola, yo lo que hice fue crear una "nueva" lista a la que le agregue los elementos pares, y al final, la renombre como la lista original

nueva_lista = []
for i in lista:
    if i%2 ==0:
      nueva_lista.append(i)
lista = nueva_lista

@Leramzes
Copy link

Leramzes commented Apr 5, 2024

Hola, yo realice esto:
def modificar(lis):
lst = list(set(lis))
lst.sort(reverse=True)

for l in (lst):
    if l%2!=0:
        lst.remove(l)

suma = sum(lst)

lst.insert(0,suma)

 
    return lst

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment