是否有任何簡單的方法將[[int]]更改爲[int],或者以此格式比較它們以確定是否缺少元素。basic haskell:將[[int]]轉換爲[int]
例如
set1= [[1,2,3]]
set2= [2,3,]
返回[1]。我嘗試這樣做:
return s1 s2= [x|x<-s1,y<-s2, x/=y]
後續問題: 我怎麼能防止重複返回 例如,如果
set1 = [[1,1,1,2,3]
我怎樣才能得到回報功能給我唯一的[1]
是否有任何簡單的方法將[[int]]更改爲[int],或者以此格式比較它們以確定是否缺少元素。basic haskell:將[[int]]轉換爲[int]
例如
set1= [[1,2,3]]
set2= [2,3,]
返回[1]。我嘗試這樣做:
return s1 s2= [x|x<-s1,y<-s2, x/=y]
後續問題: 我怎麼能防止重複返回 例如,如果
set1 = [[1,1,1,2,3]
我怎樣才能得到回報功能給我唯一的[1]
似乎有大約這裏三個不同的問題。
第一個問題,如何將int列表轉換爲列表?
concat [[1,1,2],[2,1,3]] == [1,1,2,2,1,3]
第二個問題,如何從列表中刪除重複?您可以使用nub爲(記得import Data.List
):
nub [1,2,1,3] == [1,2,3]
也許你只是想刪除連續重複?例如,如果你知道你已經排序列表:
map head (group [1,1,1,2,3]) == [1,2,3]
在這方面,group
將它們組合成連續的重複的名單,然後head
來只返回第一個每組重複的。
第三個問題,如何找到列表1中屬於項目不在列表2:
不過要小心,如預期,如果列表AREN」 \\
可能無法運行如果任何一個列表包含模糊的話。如果你想了解它在這些情況下的行爲,請仔細閱讀。
我可能不應該包含這三個答案!這三個問題應該是關於SO的單獨問題。 –
是的,就像他添加了越來越多的問題:D –
如果您有[[1,2,3]],您可以使用concat
Prelude> x
[[1,2,3]]
Prelude> concat x
[1,2,3]
Prelude>
對於第二部分,我請你閱讀本Algorithm - How to delete duplicate elements in a Haskell list
有一個直截了當的實現存在。
使用concat
轉換從[[a]]
到[a]
,並nub
(從Data.List
)刪除從列表中重複的元素。
示威ghci的:
> import Data.List (nub)
> let set1 = [[1,2,3]]
> let set2 = [2,3]
> concat set1 == set2
False
> let set1 = [[1,1,1,2,3]]
> nub (concat set1)
[1,2,3]
這真的是你想要的嗎? 「我怎樣才能得到返回函數只給我[1]」而不是[1,2,3] –
這些是這裏的幾個單獨的問題。我不確定有什麼問題?如何刪除重複項?如何找到兩個列表之間的區別?如何將列表的列表轉換爲int? –
順便說一句,你不能結束清單聲明與昏迷在set2上面 –