我有我列出:二郎地圖嵌套列表
[["asd", "ddsa"], ["ASD", "ASD"], ["FH", "SDFDF]].
我怎麼可以applicate函數F到該列表中的每個元素?我如何映射這個列表?
謝謝。
我有我列出:二郎地圖嵌套列表
[["asd", "ddsa"], ["ASD", "ASD"], ["FH", "SDFDF]].
我怎麼可以applicate函數F到該列表中的每個元素?我如何映射這個列表?
謝謝。
你可以定義一個deepMap
功能,執行是這樣的:如果輸入的是不是一個清單,評估你的函數
deepMap(Fun, T) ->
case is_list(T) of
true -> lists:map(fun(E) -> deepMap(Fun,E) end, T);
false -> Fun(T)
end.
。如果是列表,則使用map
,將deepMap
應用於所有使用函數的元素。
如果通過元素來表示你的意思是「asd」,那麼你的主List將總是像你的例子那樣深兩級,並且你的返回結果應該是相同的格式,這將是應該的。
List1 = [["asd", "ddsa"], ["ASD", "ASD"], ["FH", "SDFDF]]
[ [ F(String) || String <- List2 ] || List2 <- List1 ]
如果你的意思是,你的元素[「ASD」,「DDSA」]只是使用列表:地圖/ 2或列表理解如下。
List1 = [["asd", "ddsa"], ["ASD", "ASD"], ["FH", "SDFDF]]
[ F(List2) || List2 <- List1 ]
如果你想扁平化列表並返回一個不符合要求的值列表,你可以這樣做[[F(String)||]。 SubList < - List,String < - SubList]`。 – rvirding 2011-02-11 13:39:25
在這種情況下,您實際上需要不同的代碼,因爲字符串也是列表。此代碼將爲每個字符(整數)調用Fun。 – 2011-02-12 04:13:17