ネストされたリストの交差の検索
ネストされたリストから交差を取得するには、フラット リストの単純なアプローチとは異なる課題が生じます。この記事では、ネストされたリストの共通部分を効率的に決定するための解決策を検討します。
問題の内容で示されているように、フラット リストの共通部分を見つけるには、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 サイトの他の関連記事を参照してください。