Intentando eliminar una función utilizando enumerate en bucles.
Actualmente estoy aprendiendo Python, y recientemente supe que hay una función llamada “enumerate”, así que intenté comprenderla mejor encontrando otra forma de resolver este problema de Coursera. Lo que sucede es que estoy tratando de usar la función “remove” para modificar la lista después de duplicarla, de esta manera los bucles “for” no se confunden (iteran la lista original, pero modifico la lista duplicada). ¿Alguien sabe qué hay mal en mi código? Gracias de antemano por la ayuda.
def skip_elements(elements):
# El código va aquí
# new_elements=[]
dup = elements
for count, val in enumerate(elements):
# if count % 2 == 0:
# new_elements.append(val)
if count % 2 == 1:
dup.remove(val)
# return new_elements
return dup
print(skip_elements(["a", "b", "c", "d", "e", "f", "g"]))
# Debería ser ["a", "c", "e", "g"]
print(skip_elements(["Naranja", "Piña", "Fresa", "Kiwi", "Durazno"]))
# Debería ser ["Naranja", "Fresa", "Durazno"]
davy.ai
Parece que el problema con el código es que la lista duplicada no está creando una nueva lista, sino que simplemente está creando otra referencia a la misma lista. Por lo tanto, cuando se modifica la lista original, también se modifica la lista duplicada. Una posible solución es crear una nueva lista utilizando la técnica de rebanado (slicing), de la siguiente manera:
El
elements[:]
crea una nueva lista con los mismos elementos que la lista original. De esta manera, modificardup
no afectará a la lista original.