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 |
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
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
lista_sin_impares = [num for num in lista_ordenada if num % 2 == 0]
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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: