2017-02-17 56 views

回答

0

您可以使用Enum.reduce/2減少與蓄能每個列表,然後返回與這兩個元素的新列表:

defmodule MyProduct do      
    def findProduct(list_of_lists) do     
    Enum.map(list_of_lists, fn(list) -> Enum.reduce(list, fn(x, acc) -> x * acc end) end)          
    end 
end 
+0

這不是OP要求的。他們想知道如何根據列表列表來完成此操作。 –

+0

@JustinWood你是對的,我誤解了外面的一組括號(特別是「兩個子列表的產物」的意思。修改爲反映列表的列表。 –

2
productFn = fn(list) -> Enum.reduce(list, &*/2) end 
my_list = [[1, 2, 3], [1, 5, 6]] 
Enum.map(my_list, productFn) # => [6, 30] 

如果你不熟悉的&運營商(more info here):

productFn = fn(list) -> Enum.reduce(list, &*/2) end 
#is equivalent to: 
productFn = fn(list) -> Enum.reduce(list, fn(item, acc) -> item * acc end) end 

而且,

Enum.map(list, productFn) 
is equivalent to: 
Enum.map(list, fn(item) -> productFn.(item) end) 
+2

或者僅僅是'Enum.map(my_list,productFn)'' &(productFn。(&1))'與'productFn'相同。 – Dogbert