小编Cod*_*Guy的帖子

(F#) 查找二维数组中元素的索引

我目前在查找二维数组中特定元素的索引时遇到一些问题。我知道标准数组可以使用 findIndex ,如下所示。

let wantedElemented = 5
let index = Array.findIndex(fun x -> x = wantedElemented) array
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何将其应用于二维数组(矩形)。有没有比迭代整个数组比较每个元素更有效的方法?

for row in 0 .. max do
        for col in 0 .. max do
            if array.[row,col] = wantedElement then 
            let index = (row,col)
            index
            else (-1,-1)
Run Code Online (Sandbox Code Playgroud)

如果我确实必须迭代整个数组,我将如何在不使用选项类型的情况下处理 else 条件

arrays f# multidimensional-array

5
推荐指数
1
解决办法
1271
查看次数

访问列表列表中的第一个元素[F#]

我现在对F#感兴趣,因为它与我以前用过的所有东西都不一样.我需要访问大型列表中包含的每个列表的第一个元素.如果我假设主列表包含"x"列表本身包含5个元素,那么访问每个第一个元素的最简单方法是什么.

let listOfLists = [[1; 2; 3; 4; 5]; [6; 7; 8; 9; 10]; [11; 12; 13; 14; 15]]

我想要的输出将是一个包含[1; 6; 11]的新列表

目前我有

let rec firstElements list  =
    match list with
    | list[head::tail] -> 
        match head with
        | [head::tail] -> 1st @ head then firstElements tail
Run Code Online (Sandbox Code Playgroud)

然后扩展它,我将如何获得所有第二个元素?是否最好在没有第一个元素的情况下创建新列表(通过使用类似函数删除它们)然后重用相同的函数?

recursion f# sublist

4
推荐指数
2
解决办法
1546
查看次数

(F#) 内置函数,用于过滤不包含特定值的列表

我的问题是关于 F# 中的列表过滤。是否有一个内置函数允许过滤列表,仅返回不满足条件的列表?

let listOfList = [ [1;2;3;4;5]; [6;7;8;9;10]; [11;2;5;14;1] ]
let neededValue = 1
Run Code Online (Sandbox Code Playgroud)

我知道 F# 具有 List.Contains() 但我只想返回不满足条件的列表。

let sortedLists = listOfList |> List.filter(fun x -> x <> x.Contains(neededValue)
Run Code Online (Sandbox Code Playgroud)

这显然不起作用,因为在这种情况下,我将列表与列表是否包含特定值进行比较。我该怎么做?在这种情况下我想要的输出是:

sortedLists = [ [6;7;8;9;10] ]
Run Code Online (Sandbox Code Playgroud)

f# functional-programming

4
推荐指数
1
解决办法
943
查看次数