Elixir:根据索引从列表中选择多个元素
Posted
技术标签:
【中文标题】Elixir:根据索引从列表中选择多个元素【英文标题】:Elixir: Select mupliple elements from a list based on index 【发布时间】:2018-12-23 00:38:34 【问题描述】:假设我有一个列表,是否有内置的运算符或函数可以根据索引列表选择元素?
例如,像这样的运算符["a", "b", "z"] = alphabet[0, 1, 25]
一个简单的实现可能是:
def select(list, indices) do
Enum.map(indices, &(Enum.at(list, &1)))
end
如果它不存在,这是为了避免列表被视为数组而故意遗漏吗?
我正在尝试的一个例子让我想要这个,以防我问错问题:给定一个列表,我想选择第一个、中间和最后一个元素,然后计算三。我在做length(list)
来计算长度,然后我想用这个运算符/函数来选择我感兴趣的三个元素。
【问题讨论】:
【参考方案1】:据我所知,内置运算符不存在。每次我必须获取列表中的几个元素时,我都会使用与您相同的实现。它非常简短且易于重新创建,我怀疑这就是 elixir 中没有现成解决方案的原因。
我能想到的另一个原因是,正如您所指出的,列表不是数组这一事实:当您想要访问一个元素时,您必须访问它之前的所有元素,因此通过一个列表访问元素index 不是一个相关的函数,因为 list 没有被优化为以这种方式使用。
我仍然经常使用索引列表访问元素列表,这意味着我可能没有正确使用 elixir。
【讨论】:
以上是关于Elixir:根据索引从列表中选择多个元素的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Erlang/Elixir 中的 ets 集中选择一个随机元素?
RedisRedis 列表 List 操作 ( 查询操作 | 根据下标获取元素 | 获取列表长度 | 增操作 | 插入值 | 删操作 | 移除值 | 修改操作 | 设置列表指定索引的值 )