gpt4 book ai didi

F#:更新元组列表中的单个元组

转载 作者:行者123 更新时间:2023-12-01 05:11:27 24 4
gpt4 key购买 nike

我有一个这样的元组列表:

let scorecard = [ for i in 0 .. 39 -> i,0 ]

我想识别其中的第 n 个元组。我是这样想的:

let foundTuple = scorecard |> Seq.find(fun (x,y) -> x = 10)

然后我想根据找到的元组创建一个新元组:

let newTuple = (fst foundTuple, snd foundTuple + 1)

并有一个包含更新值的新列表

有人有匹配此模式的代码吗?我想我必须将列表分成 2 个子列表:1 个列表有 1 个元素(我要替换的元组),另一个列表有剩余的元素。然后我用替换元组和未更改元组列表创建一个新列表...

最佳答案

您可以使用 List.mapi,它使用指定的投影函数创建一个新列表 - 但它也会使用当前索引调用投影函数,因此您可以根据该索引决定要做什么.

例如,要增加整数列表的第二个元素,您可以这样做:

let oldList = [0;0;0;0]
let newList = oldList |> List.mapi (fun index v -> if index = 1 then v + 1 else v)

根据问题的不同,使用 Map 类型而不是列表可能更有意义 - map 表示从键到值的映射,当您仅更改一个时不需要复制全部内容单一值(value)。所以,例如:

// Map keys from 0 to 3 to values 0
let m = Map.ofList [0,0;1,0;2,0;3,0]
// Set the value at index 1 to 10 and get a new map
Map.add 1 10 m

关于F#:更新元组列表中的单个元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20585049/

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