Mi objetivo es recorrer la diferencia de dos listas

Intenté un código bodge para escribir a - b de la siguiente manera

for i in a:
        if i in b:
            continue
        #statements

Me preguntaba si había una forma más pitónica / eficiente de hacer esto.

4
Blaine 3 oct. 2019 a las 20:11

3 respuestas

La mejor respuesta

Puede usar sets, para ver diferencia:

a = [1, 2, 3, 4, 5]
b = [2, 4, 6]

a = set(a)
b = set(b)

for i in a.difference(b):
    print(i)

# even supports the arithmetic syntax :D
for i in a - b:
    print(i)
6
lhk 3 oct. 2019 a las 17:13

Lo que tienes está bien. Si se opone a la declaración continue, puede iterar sobre un generador:

for i in (x for x in a if x not in b):

Aunque eso podría decirse que es peor en términos de legibilidad.

0
chepner 3 oct. 2019 a las 17:13

En términos de conjuntos, los elementos en a pero no en b serían la diferencia del conjunto, por lo tanto, esto sería

for i in set(a).difference(b):
    # statements
0
CoryKramer 3 oct. 2019 a las 17:16
58223932