ホームページ > バックエンド開発 > Python チュートリアル > Python でネストされたリストの共通部分を効率的に見つけるにはどうすればよいですか?

Python でネストされたリストの共通部分を効率的に見つけるにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-04 05:40:11
オリジナル
289 人が閲覧しました

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

ネストされたリストの交差の検索

ネストされたリストから交差を取得するには、フラット リストの単純なアプローチとは異なる課題が生じます。この記事では、ネストされたリストの共通部分を効率的に決定するための解決策を検討します。

問題の内容で示されているように、フラット リストの共通部分を見つけるには、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}
ログイン後にコピー

ただし、

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]]
ログイン後にコピー

のような入れ子になったリストを扱う場合、単純なアプローチでは目的の結果を生成できません。結果:

print(set(c1) & set(c2))  # Output: set([])
ログイン後にコピー

目指す交差は次のとおりです:

c3 = [[13, 32], [7, 13, 28], [1, 6]]
ログイン後にコピー

解決策:

解決策は、ネストされたリストを次のように変換することです。セットを作成し、セットの交差を実行し、元のネストされたリストを再構築します。構造:

# 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]]
ログイン後にコピー

集合交差と集合内包表記を活用することにより、このソリューションは、ネストされたリストの構造を維持しながら効率的に交差部分を取得します。

以上がPython でネストされたリストの共通部分を効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート