例如,如果我有一個函數參數findProduct([[1,2,3],[1,5,6]])我怎麼能找出2個子列表的產品,然後將它們添加到一個新的與結果列表[6,30]?Elixir:我如何在列表中找到子列表的產品?
0
A
回答
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
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
這不是OP要求的。他們想知道如何根據列表列表來完成此操作。 –
@JustinWood你是對的,我誤解了外面的一組括號(特別是「兩個子列表的產物」的意思。修改爲反映列表的列表。 –