我试图实现一个功能
llen(ListOfLists)
返回一个列表,其中包含ListOfLists中列表的长度。函数应该使用列表:map / 2。
示例:
1> funs:llen([[1, 2, 3], [], [4, 5]]).
[3, 0, 2]
我知道如何计算一个列表的长度:
list([]) -> 0;
list([_|T]) -> 1+list(T).
但我不知道如何使用乐趣和列表为多个列表执行此操作。
答案 0 :(得分:5)
lists:map/2
是一个高阶函数,它为列表的每个元素应用一个函数。 erlang:length/1
是一个返回列表长度的函数。
使用erlang:length/1
:
lists:map/2
lists:map(fun erlang:length/1, [[1, 2, 3], [], [4, 5]])
答案 1 :(得分:2)
当你进入列表理解时:
53> L = [[1, 2, 3], [], [4, 5]].
[[1,2,3],[],[4,5]]
54> [length(X) || X <- L].
[3,0,2]
list comprehension 就像其他语言中的for循环一样,这个如下:
length(X) for X in L
length(X) || X <- L
外部[ ]
用于将所有结果收集到列表中。