从列表中获取第 n 个元素
List
不支持随机访问,这意味着从列表中获取第五个元素比第一个元素需要更多的工作,因此没有 List.get nth list
函数。一个人必须从头开始(1 -> 2 -> 3 -> 4 -> 5
)。
**如果你需要随机访问,**你可能会得到更好的结果(和性能)随机访问数据结构,如 Array
,其中第一个元素采取与第 1000 个相同的工作量。 (复杂度 O(1)
)。
然而,有可能 (但不鼓励) 获得第 n 个元素:
get : Int -> List a -> Maybe a
get nth list =
list
|> List.drop (nth - 1)
|> List.head
fifth : Maybe Int
fifth = get 5 [1..10]
-- = Just 5
nonexistent : Maybe Int
nonexistent = get 5 [1..3]
-- = Nothing
同样,这需要更多的工作,nth
参数越大。