Home >Backend Development >Python Tutorial >How Can I Efficiently Find Intersections of Nested Lists in Python?

How Can I Efficiently Find Intersections of Nested Lists in Python?

Barbara Streisand
Barbara StreisandOriginal
2024-12-04 05:40:11308browse

How Can I Efficiently Find Intersections of Nested Lists in Python?

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn