gpt4 book ai didi

list - 创建一个新列表,对旧列表中的元素进行添加和求和

转载 作者:行者123 更新时间:2023-12-04 02:08:17 26 4
gpt4 key购买 nike

我有一个列表 xxs我需要创建一个新列表来添加和汇总旧列表中的元素。

让我画出来演示一下:

visualization of list transformation

所以,我有 list :

xxs = [("a","b", [(1,"a","b"),(2,"a","b")]), ("c","d",[(3,"a","b"),(4,"a","b")])]

到目前为止,我最好的方法是:
infoBasicas = [ (x,y,aux) | (x,y,_) <- xxs]
where aux = sum [ z | (_,_,ys) <- xxs, (z,_,_) <- ys]

输出:
[("a","b",10),("c","d",10)]

虽然我并不遥远……我还没有到那里,非常感谢一些建议。

最佳答案

您的解决方案的问题是 aux xxs 的每个元素都相同.当你写 (x,y,_) <- xxs ,您正在丢弃包含要求和的数字的列表。相反,保留该列表,一次处理一个元素,因此:

infoBasicas = [(x, y, doSum innerList) | (x, y, innerList) <- xxs]

innerList 的总和s,你只想要数字,所以你可以把它们扔掉。完成后,您会得到一个数字列表,可以将其与标准 sum 相加。功能:
doSum list = sum (fst3 list) -- There is one small error here. Can you see what it is?
fst3 (a, _, _) = a

不是我们使用 fst3在这里,而不是 fst ,因为这些是三元组,而不是对。

关于list - 创建一个新列表,对旧列表中的元素进行添加和求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8514917/

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