Elixir 长生不老药有转置功能吗?
嗨,我在Elixir中寻找转置函数。 例如,我有一个数组Elixir 长生不老药有转置功能吗?,elixir,Elixir,嗨,我在Elixir中寻找转置函数。 例如,我有一个数组a,调用一个函数后,结果应该是b: a = [[1, 2], [3, 4], [5, 6]] b = transpose(a) b => [[1, 3, 5], [2, 4, 6]] 目前Elixir中没有,但您可以使用以下工具创建自己的: def transpose([]), do: [] def transpose([[]|_]), do: [] def transpose(a) do [Enum.map(a, &h
a
,调用一个函数后,结果应该是b
:
a = [[1, 2], [3, 4], [5, 6]]
b = transpose(a)
b => [[1, 3, 5], [2, 4, 6]]
目前Elixir中没有,但您可以使用以下工具创建自己的:
def transpose([]), do: []
def transpose([[]|_]), do: []
def transpose(a) do
[Enum.map(a, &hd/1) | transpose(Enum.map(a, &tl/1))]
end
Elixir中(仍然)没有,但您可以使用:
def transpose(rows) do
rows
|> List.zip
|> Enum.map(&Tuple.to_list/1)
end
这里有一个稍微不同的解决方案:
def transpose(m) where length(m) <2, do: m
def transpose(m) do
for i <- 0..length(m)-1 do
Enum.reduce(m,[], fn x,acc -> acc ++ [Enum.at(x,i)] end)
end
end
def transpose(m)where length(m)我在transpose=fn(m)->List.zip(m)|>Enum.map(&Tuple.to_List(&1))end中发现了另一个很好的实现
实际上在捕获中不需要显式的参数Enum.map(&Tuple.to_List/1)
效果很好。@IvanKozik OTP 19.1 Elixir 1.4.2空列表没有问题