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
Release: 2024-12-04 05:40:11
Original
244 people have browsed it

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}
Copy after login

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]]
Copy after login

the straightforward approach fails to produce the desired result:

print(set(c1) & set(c2))  # Output: set([])
Copy after login

The intersection we aim for is:

c3 = [[13, 32], [7, 13, 28], [1, 6]]
Copy after login

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]]
Copy after login

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!

source:php.cn
Statement of this Website
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
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template