首页 > 解决方案 > 反转和连接列表

问题描述

将列表的反向版本连接到原始列表的最惯用的方法是什么?所以:

Input:  [1, 2, 3], which is the output of my_func()
Output: [1, 2, 3, 3, 2, 1]

可以通过一种不太惯用的方式来实现这一点,如下所示:

n = my_func() # returns e.g. [1, 2, 3]
n_reversed = Enum.reverse(n)
n_combined = Enum.concat(n, n_reversed)

我正在考虑这样的事情(不起作用):

my_func() |> Enum.concat(Enum.reverse(&(&1)))

这个解决方案确实有效,但对我来说看起来不是很地道:

n |> Enum.reverse() |> (fn enum -> Enum.concat(n, enum) end).()

你知道实现这一目标的惯用方法吗?

标签: elixir

解决方案


我会说使用++运算符而不是Enum.concat. (请注意,++要求参数是列表,而Enum.concat接受任何类型的可枚举。)

n_combined = n ++ Enum.reverse(n)

推荐阅读