gpt4 book ai didi

scala - 将 Scala Int 列表分组为不同的间隔?

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

我不确定 groupBytakeWhilegrouped 是否会实现我想做的事情。我需要开发一个函数,根据我想要指定的时间间隔自动对数字列表进行分组。该用例采用年龄列表并将它们分类为动态年龄类别(如 1-5、5-10 等)。它需要是动态的,因为用户可能想要更改间隔。

例如,我有一个数字列表:List(103, 206, 101, 111, 211, 234, 242, 99)

我可以按 10100 间隔。那么输入 100 的结果将是:List(List(99),List(101,103,111),List(206,211,234,242))

我在过去一个小时内搜索了 Google 和 SO,但没有找到任何内容。感谢您的帮助!

最佳答案

你需要groupBy:

val xs = List(103, 206, 101, 111, 211, 234, 242, 99)

xs.groupBy(_ / 100)
// Map(0 -> List(99), 1 -> List(103, 101, 111), ...)

grouped 只是创建给定大小的后续 block ,而不是查看实际元素。只要谓词成立,takeWhile 就只获取前导元素。


您可以在生成的 map 上使用 withDefaultValue 方法使其显示为索引序列,其中一些条目为空:

val ys = xs.groupBy(_ / 100) withDefaultValue Nil
ys(0) // List(99)
ys(4) // List() !

关于scala - 将 Scala Int 列表分组为不同的间隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16928852/

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