Varias operaciones para eliminar duplicados de las listas.


Hay varias formas principales de deduplicar listas rápidamente en el trabajo diario, espero que puedan ayudarte.


1. El método set en Python elimina los duplicados, pero cambiará la lista original para ordenarla.

l1 = [1,4,4,2,3,4,5,6,1]
l2 = list(set(l1))
print(l2)    # [1, 2, 3, 4, 5, 6]

2. Asegúrese de que el orden después de la deduplicación permanezca sin cambios mediante el método de índice en la lista.

l1 = [1,4,4,2,3,4,5,6,1]
l2 = list(set(l1))
l2.sort(key=l1.index)
print(l2)      # [1, 4, 2, 3, 5, 6]
itertools.groupby

3. Utilice la función importar itertools

l1 = [1,4,4,2,3,4,5,6,1]
l1.sort()
l = []
it = itertools.groupby(l1)
for k,g in it:
    l.append(k)
print(l)      # [1, 2, 3, 4, 5, 6]

4.Método del diccionario Python fromkeys()

l1 = [1,4,4,2,3,4,5,6,1]
t = list({
    
    }.fromkeys(l1).keys())

5. Eliminando el índice

l1 = [1,4,4,2,3,4,5,6,1]
t = l1[:]
for i in l1:
    while t.count(i) >1:
          del t[t.index(i)]
# 解决顺序问题
t.sort(key=l1.index)
print(t)    # [1, 4, 2, 3, 5, 6]

Pero si desea mantener el orden original sin cambios, puede probar el siguiente método:

1. Recorra y cree una nueva lista[]

l1 = [1,4,4,2,3,4,5,6,1]
new_l1 = []
for i in l1:
    if i not in new_l1:
        new_l1.append(i)
print(new_l1)    # [1, 4, 2, 3, 5, 6]

2.método de reducción

from functools import reduce
l1 = [1,4,4,2,3,4,5,6,1]
func = lambda x,y:x if y in x else x + [y]
print(reduce(func,[[],]+l1))   # [1, 4, 2, 3, 5, 6]

Espero que ayude a todos


Supongo que te gusta

Origin blog.csdn.net/weixin_45906701/article/details/115179276
Recomendado
Clasificación