gpt4 book ai didi

list - Haskell 按总和排序子列表

转载 作者:行者123 更新时间:2023-12-01 02:17:00 25 4
gpt4 key购买 nike

在 Haskell 中给定一个整数列表列表,你如何根据每个子列表中值的总和对其子列表进行排序?即,如果给定的列表是:

[[5,3],[1,1,1,1],[2],[10,22,0]]

函数的输出为:

[[2],[1,1,1,1],[5,3],[10,22,0]]

注意:每个子列表中的元素数量无关紧要,我只需要按总和升序排列的子列表。我该怎么做呢?谢谢!

最佳答案

所有这些方法都有效:

sortBySums = sortBy (\l r -> (compare (sum l) (sum r))) -- taken from pdoherty926
sortBySums = sortBy (compare `on` sum)
sortBySums = sortBy (comparing sum)
sortBySums = sortOn sum

sortOn 的优点是它使用 Schwartzian 变换,即它只为每个元素计算一次总和。

从内存中导入,无需导入即可在 https://www.haskell.org/ 上工作

import Data.List(sortBy,sortOn)
import Data.Function(on)
import Data.Ord(compare,comparing)

关于list - Haskell 按总和排序子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49546876/

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