gpt4 book ai didi

scala - 按索引过滤列表

转载 作者:行者123 更新时间:2023-12-02 20:57:27 25 4
gpt4 key购买 nike

如何通过存储在另一个列表中的索引过滤列表?例如,我有以下值列表:

val list = List("a", "b", "c", "d", "e", "f")

和索引列表:

val indexes = List(1,2,5)

我想获得以下列表:

List("b", "c", "f)

最惯用的方法是什么?

最佳答案

为了避免创建太多中间对象,您可以编写

indexes.map(list.lift).flatten

对于索引序列,列表中的查找时间将是恒定的。这既符合习惯又高效。如果列表的类型为List,其查找时间为O(n),那么您的查找时间为O(m * n),其中m是索引的长度,n是列表的长度。

它与 indexes.map(list) 之间的区别在于,如果在列表中找不到索引,是否要抛出异常。

list.lift 创建一个函数,该函数接受索引并返回 Some(value)(如果存在),否则返回 None。 flatten 方法会展平生成的选项列表。它删除所有 None 结果,并从 Some 结果中提取值。

关于scala - 按索引过滤列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32925895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com