Eliminar elemento repetido de una lista en Python

Las listas en Python son objetos dinámicos, admiten valores de diferentes tipos y poseen diferentes métodos que nos permiten realizar una variada cantidad de operaciones, como se explica en Listas en Python.

Descripción del tema: dada una lista de números, algunos repetidos, se le pregunta al usuario cuál desea eliminar y el programa debe eliminar todos los elementos de la lista que sean igual al número ingresado por el usuario. El programa debe mostrar en pantalla primero la lista actual con los elementos que posee.

Código fuente
#!/usr/bin/env python

def removeItems(lst, item):
    for i in lst[:]:
        if i == item:
            lst.remove(item)
    return lst

lst = [2, 90, 89, 2, 5, 101, 90, 35, 2, 43, 89, 101, 5, 89, 90, 5]

print("Lista actual: {}".format(lst))

item = int(input("\nIngrese el elemento que desea eliminar: "))

print("Lista modificada: {}".format(removeItems(lst, item)))

Para recordar: La línea #!/usr/bin/env python es muy famosa en todos los sistemas Tipo Unix, se llama Shebang y permite ejecutar programas que requieren de un intérprete, directamente sobre la línea de comandos sin necesidad de escribir el nombre del intérprete.

Con la línea ShebangSin la línea Shebang
./EliminarElemento.pypython EliminarElemento.py
Función removeItems()
def removeItems(lst, item):
    for i in lst[:]:
        if i == item:
            lst.remove(item)
    return lst

Esta función tiene todo el código útil para cumplir su labor y recibe 2 argumento, el primero es la lista que contiene los elementos (llamada lst) y el segundo es el elemento que deseamos eliminar (llamado item).

Iterando sobre la lista
for i in lst[:]:
    if i == item:
        lst.remove(item)

Con el bucle for vamos a iterar sobre una copia de la lista creada usando la operación de rebanada (o slice, en inglés) lst[:] y cada elemento es asignado a la variable i. La sentencia if evalúa si el elemento en la variable i es el mismo en la variable item y luego lo eliminamos usando el método remove().

Devolviendo la lista
return lst

Por último retornamos la lista sin el elemento ingresado por el usuario y los elementos repetidos.

Creando lista
lst = [2, 90, 89, 2, 5, 101, 90, 35, 2, 43, 89, 101, 5, 89, 90, 5]

Para este tema he creado una lista con valores predefinidos que pueden estar repetidos, pero también se puede crear con valores al azar o ingresados por el usuario o quizas una lista generada del análisis hecho a otras fuentes de datos.

Mostrando lista actual
print("Lista actual: {}".format(lst))

Antes de realizar cualquier operación, le mostramos al usuario que valores se encuentran en la lista actual. El método .format() formatea el string reemplazando el par de «{}» por el contenido que se encuentra en la lista.

Solicitando y leyendo el elemento a eliminar
item = int(input("\nIngrese el elemento que desea eliminar: "))

Con la función input() el programa solicita y lee el elemento que el usuario desea eliminar, luego lo convertimos con la función int() en tipo entero debido a que la función input lee todo en tipo string y se asigna el valor a la variable item.

Llamando a la función removeItems() y mostrando el resultado
print("Lista modificada: {}".format(removeItems(lst, item)))

Primero es llamada la función removeItems() pasando la lista y el elemento que se desea eliminar, nos devuelve como resultado la lista modificada sin el elemento ingresado por el usuario y sus elementos repetidos; y luego mostramos el resultado en pantalla con la función print().

Ejecutando el programa

Al ejecutar el programa, nos muestra un resultado similar a este:

[fixedtorres@linuxero]$ ./EliminarElementoDeUnaLista.py
Lista actual: [2, 90, 89, 2, 5, 101, 90, 35, 2, 43, 89, 101, 5, 89, 90, 5]

Ingrese el elemento que desea eliminar: 2
Lista modificada: [90, 89, 5, 101, 90, 35, 43, 89, 101, 5, 89, 90, 5]
[fixedtorres@linuxero]$

Nos muestra la lista actual, solicita que ingresemos el elemento que deseamos eliminar y nos devuelve la lista sin el elemento que ingresamos, y si hay repetidos, los elimina. En este caso se elimina el 2 que se repite 3 veces.

2 comentarios

Añadir un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *