Maison >développement back-end >Tutoriel Python >Comment puis-je trouver efficacement des intersections de listes imbriquées en Python ?
Trouver des intersections de listes imbriquées
Récupérer des intersections à partir de listes imbriquées pose un défi qui diffère de l'approche simple pour les listes plates. Cet article explore une solution pour déterminer efficacement les intersections de listes imbriquées.
Comme le démontre le contenu du problème, la recherche d'intersections de listes plates peut être facilement obtenue à l'aide de l'ensemble d'intersection :
b1 = [1,2,3,4,5,9,11,15] b2 = [4,5,6,7,8] print(set(b1) & set(b2)) # Output: {4, 5}
Cependant , lorsqu'il s'agit de listes imbriquées telles que :
c1 = [1, 6, 7, 10, 13, 28, 32, 41, 58, 63] c2 = [[13, 17, 18, 21, 32], [7, 11, 13, 14, 28], [1, 5, 6, 8, 15, 16]]
l'approche simple ne parvient pas à produire le résultat souhaité résultat :
print(set(c1) & set(c2)) # Output: set([])
L'intersection que nous visons est :
c3 = [[13, 32], [7, 13, 28], [1, 6]]
Solution :
La solution réside dans la conversion des listes imbriquées en ensembles, en effectuant des intersections d'ensembles, puis en reconstruisant la structure de liste imbriquée d'origine :
# Convert nested lists to sets set_c1 = set(c1) set_c2 = [set(sublist) for sublist in c2] # Compute intersections intersections = [set_c1.intersection(sublist) for sublist in set_c2] # Reconstruct nested list structure result = [[item for item in intersection] for intersection in intersections] # Print the result print(result) # Output: [[13, 32], [7, 13, 28], [1, 6]]
En tirant parti de l'ensemble intersection et compréhension d'ensembles, cette solution récupère efficacement les intersections de listes imbriquées, en préservant leur structure.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!