[英]Intersection of lists of tuples - Haskell
我有兩個元組列表,都以[(a,b),..]的形式出現。
我希望將它們進行比較並獲得共同的元素-但已嘗試使用相交,但這不起作用。 有沒有一種方法使用地圖/過濾器將相交輸出為新的元組列表?
嘗試使用列表理解:
[x | x <- list1, x `elem` list2]
例:
Prelude> let list1 = [(1,2), (2,3), (3,4)]
Prelude> let list2 = [(1,2), (2,3), (3,5)]
Prelude> [x | x <- list1, x `elem` list2]
[(1,2),(2,3)]
無論如何, intersect
應該起作用,它對我有用:
Prelude> import Data.List
Prelude Data.List> list1 `intersect` list2
[(1,2),(2,3)]
您可以使用Data.Function.on
函數為元組的第一個(或第二個)元素提供所需的功能:
import Data.Function (on)
import Data.List (intersectBy)
intersectBy ((==) `on` fst) [(1,2), (2,3), (3,4)] [(1,2), (2,3), (3,5)]
> [(1,2),(2,3),(3,4)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.