第一次發帖,如果我做錯了什么或不清楚我的問題,抱歉
我對 Haskell 很陌生,我很難弄清楚如何操縱串列理解來向我展示我想要的東西。我有兩個給我元組串列的函式(它們基本上是矩陣,其中一個是完整的,另一個是隨機的)
我想創建一個帶有串列理解的新串列(矩陣),它將回傳元組是否與元list2
組相同list1
。
例如:
list1 = [(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]
list2 = [(1,0),(1,1)]
result = [False, False, False, True, True, False, False, False, False]
但是我寫的串列理解給了我一個笛卡爾積
[False,False,False,True,False,False,False,False,False,False,False,False,False,True,False,False,False,False]
即使在 List1 中找到相同的元組,串列推導仍會繼續比較 List2 中的元組。
這就是我撰寫串列理解的方式:
[ (x==y) | x <- (list2), y <- (list1)]
我很確定必須有某種謂詞可以寫在串列理解中以獲得我想要的東西,但我不知道如何實作這一點。
uj5u.com熱心網友回復:
這是電子成員資格檢查,因此您可以將其實作為:
[ x `elem` list2 | x <- list1 ]
但更簡單的可能是使用map :: (a -> b) -> [a] -> [b]
:
map (`elem` list2) list1
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/487891.html
下一篇:給定條件查找串列的最后一個元素