Skip to content

Instantly share code, notes, and snippets.

@hcosta
Created February 15, 2022 11:30
Show Gist options
  • Select an option

  • Save hcosta/d60379cab2df4e3c920a76c5ad806194 to your computer and use it in GitHub Desktop.

Select an option

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

@Di-Verso
Copy link

lista_sin_impares = [num for num in lista_ordenada if num % 2 == 0]

@FerP46
Copy link

FerP46 commented Mar 10, 2025

Buenas,
También se podría corregir en el bucle for restando uno al contador cada vez que borremos, así volveremos a testear la sentencia IF del elemento que ha reemplazado al borrado en la lista:
for v,i in enumerate(lista):
if i%2==0:
lista.remove(i)
v=v-1

@maxzambrana
Copy link

maxzambrana commented Sep 10, 2025

Esta es mi propuesta de código. No sabía que al hacer un list(set()) mantenía intacta la lista original, por eso usé copy()

def modificar(lista):
    l = lista.copy() # crear duplicado de lista recibida
    # transformar en set para eliminar duplicados
    l = list(set(l)) # transformar a lista
    l.sort(reverse=True) # para ordenar elementos. 
        
    l2 = [] # crear nueva lista con elementos pares
    for i in l:
        if i % 2 == 0: # si elemento i es par
            l2.append(i)  # se agrega a nueva lista l2

    num = sum(l2) # al finalizar la creación de la nueva lista, se suman los valores de la misma
    l2.insert(0,num)  # insertar la suma como primer valor de nueva lista
    print(f'La nueva lista es: {l2}') # imprimir nueva lista
    print(f'{l2[0]} es igual a la suma de {l2[1:]}') # explicar de donde proviene el priver valor
    print(l2[0]==sum(l2[1:])) # validar que la igualdad se cumple
    
modificar(lista)

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