假设我有一个列表,是否有内置的运算符或函数根据索引列表选择元素?
例如,一个像这样的["a", "b", "z"] = alphabet[0, 1, 25]
一个简单的实现可能是:
def select(list, indices) do
Enum.map(indices, &(Enum.at(list, &1)))
end
如果不存在,这是故意避免将列表视为数组吗?
一个我试图做的例子使我想要这个,以防万一我问错了一个问题:给定一个列表,我想选择第一个,中间和最后一个元素,然后计算三。我在做length(list)
来计算长度,然后想使用此运算符/函数选择我感兴趣的三个元素。
答案 0 :(得分:0)
据我所知,内置运算符不存在。每次我必须获取列表中的几个元素时,我都会使用与您相同的实现。重新创建非常短且简单,我怀疑这是e剂中没有现成解决方案的原因。
我能想到的另一个原因是,正如您所指出的,列表不是数组:当您要访问一个元素时,必须访问它之前的所有元素,因此要通过列表访问元素索引不是一个相关的函数,因为列表没有经过优化以这种方式使用。
仍然我经常使用索引列表来访问元素列表,这意味着我可能没有以正确的方式使用长生不老药。