Python: diferencia de la lista que mantiene duplicados

El problema de encontrar diferencias entre listas, es decir, eliminar elementos que aparecen en una lista y no en otra, ya se ha comentado anteriormente. Pero el uso de conjuntos ignora los duplicados y, a veces, necesitamos eliminar los elementos exactos que aparecen en las listas. Analicemos ciertas formas en que se puede realizar esta tarea.

Método n.º 1: Uso del bucle
Esta es la forma bruta en la que se puede realizar esta tarea. En esto, extraemos los elementos en una forma en la que eliminamos elementos cada vez y rompemos el ciclo para eliminar un elemento a la vez.

# Python3 code to demonstrate 
# Difference of List keeping duplicates
# using loop
  
# Initializing lists
test_list1 = [4, 5, 7, 4, 3]
test_list2 = [7, 3, 4]
  
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
  
# Difference of List keeping duplicates
# using loop
for ele in test_list2:
    for sub in test_list1:
        if ele == sub:
            test_list1.remove(sub)
            break
  
# printing result 
print ("List after performing difference : " + str(test_list1))
Producción :

The original list 1 is : [4, 5, 7, 4, 3]
The original list 2 is : [7, 3, 4]
List after performing difference : [5, 4]

Método #2: Usarpop() + list comprehension + index()
Esta tarea también se puede realizar usando una combinación de las funcionalidades anteriores. En esto, solo iteramos la lista usando la comprensión de la lista y eliminamos el elemento usando index() y pop().

# Python3 code to demonstrate 
# Difference of List keeping duplicates
# using pop() + list comprehension + index()
  
# Initializing lists
test_list1 = [4, 5, 7, 4, 3]
test_list2 = [7, 3, 4]
  
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
  
# Difference of List keeping duplicates
# using pop() + list comprehension + index()
[test_list1.pop(test_list1.index(idx)) for idx in test_list2]
  
# printing result 
print ("List after performing difference : " + str(test_list1))
Producción :

The original list 1 is : [4, 5, 7, 4, 3]
The original list 2 is : [7, 3, 4]
List after performing difference : [5, 4]

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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