Created
February 15, 2022 11:30
-
-
Save hcosta/d60379cab2df4e3c920a76c5ad806194 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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