Finding Intersections of Nested Lists
Retrieving intersections from nested lists poses a challenge that differs from the straightforward approach for flat lists. This article explores a solution to efficiently determine the intersections of nested lists.
As demonstrated in the problem content, finding intersections of flat lists can be easily achieved using set intersection:
b1 = [1,2,3,4,5,9,11,15] b2 = [4,5,6,7,8] print(set(b1) & set(b2)) # Output: {4, 5}
However, when dealing with nested lists like:
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]]
the straightforward approach fails to produce the desired result:
print(set(c1) & set(c2)) # Output: set([])
The intersection we aim for is:
c3 = [[13, 32], [7, 13, 28], [1, 6]]
Solution:
The solution lies in converting the nested lists to sets, performing set intersections, and then reconstructing the original nested list structure:
# 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]]
By leveraging set intersection and set comprehension, this solution efficiently retrieves the intersections of nested lists, preserving their structure.
The above is the detailed content of How Can I Efficiently Find Intersections of Nested Lists in Python?. For more information, please follow other related articles on the PHP Chinese website!