我列出了:
[["asd", "ddsa"], ["ASD", "ASD"], ["FH", "SDFDF]].
如何将函数F应用于此列表的每个元素?我该如何映射此列表?
谢谢。
答案 0 :(得分:7)
如果按元素表示你的意思是“asd”,那么你的主列表将总是两个级别,如你的例子所示,你的返回结果将采用相同的格式,这将是应该的。
List1 = [["asd", "ddsa"], ["ASD", "ASD"], ["FH", "SDFDF]]
[ [ F(String) || String <- List2 ] || List2 <- List1 ]
如果你的意思是你的元素是[“asd”,“ddsa”],只需使用list:map / 2或list comprehension,如下所示。
List1 = [["asd", "ddsa"], ["ASD", "ASD"], ["FH", "SDFDF]]
[ F(List2) || List2 <- List1 ]
答案 1 :(得分:2)
您可以定义deepMap
函数,执行以下操作:
deepMap(Fun, T) ->
case is_list(T) of
true -> lists:map(fun(E) -> deepMap(Fun,E) end, T);
false -> Fun(T)
end.
如果输入不是列表,请评估您的功能。如果是列表,请使用您的函数将deepMap
应用于使用map
的所有元素。