找到一个序列的元组

时间:2013-10-04 08:58:37

标签: f#

我有(x: int, y:bool)类型的元组序列,如果xy=isMin,我想找到valListisMin项的最小let valList = seq{ for i =0 to 8 do yield (GetVal (i,not isMin),not isMin) } let onlyMinType (x: int, y:bool) = if y==isMin then x let maxVal = valList |> Seq.collect(onlyMinType) |> if isMin then Seq.min else Seq.max maxVal 真。

Seq.collect(onlyMinType)

我不知道该怎么做 onlyMinType和函数{{1}}

2 个答案:

答案 0 :(得分:1)

  

我有seq Tuple个类型(x: int, y:bool),我想查找x y=isMin项{min} valList if }} {isMin {1}} TRUE`。

我们的想法是使用Seq.filter snd来过滤来自seq的值,其中第二个值为is。然后使用Seq.sortBy fst根据每个元组的第一个值对seq进行排序。

true

答案 1 :(得分:1)

您可以通过几种不同的方式使用Seq.minBy

[(1, false); (2, true); (0, true); (-1, false)]
|> Seq.filter snd
|> Seq.minBy fst
|> fst

[(1, false); (2, true); (0, true); (-1, false)]
|> Seq.minBy (fun (n, b) -> if b then n else Int32.MaxValue)
|> fst

会很好用。