Elixir:根据索引从列表中选择多个元素

时间:2018-07-15 04:39:03

标签: list elixir enumerable

假设我有一个列表,是否有内置的运算符或函数根据索引列表选择元素?

例如,一个像这样的["a", "b", "z"] = alphabet[0, 1, 25]

运算符

一个简单的实现可能是:

def select(list, indices) do
  Enum.map(indices, &(Enum.at(list, &1)))
end

如果不存在,这是故意避免将列表视为数组吗?

一个我试图做的例子使我想要这个,以防万一我问错了一个问题:给定一个列表,我想选择第一个,中间和最后一个元素,然后计算三。我在做length(list)来计算长度,然后想使用此运算符/函数选择我感兴趣的三个元素。

1 个答案:

答案 0 :(得分:0)

据我所知,内置运算符不存在。每次我必须获取列表中的几个元素时,我都会使用与您相同的实现。重新创建非常短且简单,我怀疑这是e剂中没有现成解决方案的原因。

我能想到的另一个原因是,正如您所指出的,列表不是数组:当您要访问一个元素时,必须访问它之前的所有元素,因此要通过列表访问元素索引不是一个相关的函数,因为列表没有经过优化以这种方式使用。

仍然我经常使用索引列表来访问元素列表,这意味着我可能没有以正确的方式使用长生不老药。