簡體   English   中英

元組列表的交集-Haskell

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM