Trouver la différence entre deux listes en Python
Cet article explique comment trouver la différence entre les deux listes en Python. La solution doit renvoyer les éléments présents dans la première liste mais pas dans la seconde liste.
1. Utilisation set()
fonction
Une solution simple consiste à convertir les deux listes pour définir une structure de données, puis à calculer la différence à l'aide de la -
opérateur.
1 2 3 4 5 6 7 8 9 10 |
if __name__ == '__main__': first = [2, 1, 3, 4, 1] second = [3, 4, 5] # La fonction `set()` permet de créer des ensembles diff = list(set(first) - set(second)) print(diff) # Impressions # [1, 2] |
2. Utilisation difference()
fonction
L'objet défini offre également une fonction intégrée difference()
, qui renvoie un nouvel ensemble avec des éléments du premier ensemble qui ne sont pas dans le second ensemble.
1 2 3 4 5 6 7 8 9 |
if __name__ == '__main__': first = [2, 1, 3, 4, 1] second = [3, 4, 5] diff = list(set(first).difference(set(second))) print(diff) # Impressions # [1, 2] |
3. Utilisation de la compréhension de liste
Les deux solutions ci-dessus ne conservent pas l'ordre d'origine des éléments dans la liste d'entrée. Notez également que toutes les entrées en double dans la première liste sont éliminées dans la liste de sortie. Pour préserver l'ordre et autoriser les doublons, vous pouvez utiliser la compréhension de liste, comme indiqué ci-dessous :
1 2 3 4 5 6 7 8 9 |
if __name__ == '__main__': first = [2, 1, 3, 4, 1] second = [3, 4, 5] diff = [x for x in first if x not in second] print(diff) # imprime [2, 1, 1] |
Pour améliorer les performances des listes volumineuses, envisagez de convertir la deuxième liste en premier ensemble.
1 2 3 4 5 6 7 8 9 10 |
if __name__ == '__main__': first = [2, 1, 3, 4, 1] second = [3, 4, 5] s = set(second) diff = [x for x in first if x not in s] print(diff) # imprime [2, 1, 1] |
4. Trouver une différence symétrique
Enfin, si vous avez besoin de la différence symétrique entre deux ensembles, vous pouvez utiliser le symmetric_difference()
fonction ou ^
opérateur. Cela renverra des éléments dans l'une ou l'autre des listes mais pas dans les deux.
1 2 3 4 5 6 7 8 |
if __name__ == '__main__': first = [2, 1, 3, 4, 1] second = [3, 4, 5] diff = list(set(first) ^ set(second)) print(diff) # imprime [1, 2, 5] |
Il s'agit de trouver la différence entre les deux listes en Python.