Maison >développement back-end >Tutoriel Python >Comment puis-je trouver efficacement des intersections de listes imbriquées en Python ?

Comment puis-je trouver efficacement des intersections de listes imbriquées en Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-04 05:40:11319parcourir

How Can I Efficiently Find Intersections of Nested Lists in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn