arrays - 如何将切片从数组位置带到数组末尾?
问题描述
如何获得具有这样元素的数组数组?是否有一个内置的 scala api 可以提供这个值(不使用组合)?
例如
val inp = Array(1,2,3,4)
输出
Vector(
Vector((1,2), (1,3), (1,4)),
Vector((2,3), (2,4)),
Vector((3,4))
)
我的答案如下。我觉得在 scala 中应该有一个比这更优雅的答案。
val inp = Array(1,2,3,4)
val mp = (0 until inp.length - 1).map( x => {
(x + 1 until inp.length).map( y => {
(inp(x),inp(y))
})
})
print(mp)
+Edit 添加了组合约束。
解决方案
在每个组合的第一个元素 ( ) 上使用combinations(2)
and将为您提供所需的值和结构。获得结果需要使用一些转换groupBy()
0
Vector[Vector]]
toVector
scala> inp.combinations(2).toList.groupBy(a => a(0)).values
res11: Iterable[List[Array[Int]]] = MapLike.DefaultValuesIterable
(
List(Array(2, 3), Array(2, 4)),
List(Array(1, 2), Array(1, 3), Array(1, 4)),
List(Array(3, 4))
)
推荐阅读
- c# - 自托管 Net Core 3 应用程序不采用端口设置
- scala - Intellij Idea - Scala 使用什么配置
- python - 控制台彩色文本更改字符串长度
- cocoapods - SwiftyDropbox 与 AlamofireImage 问题
- json - Oracle PL/SQL 是否提供了 JSON 模式验证器?
- python - 熊猫数据框扩展重置其状态
- python-3.x - Python3 PKCS7编码器
- python - 在 mypy 中动态检查元组长度
- python-3.x - 使用 VB.Net 通过 TCP 发送文件并在 Python3.6 中使用 Socket 接收文件时出现文件编码错误
- elixir - 通过 Phoenix Elixir 处理 Pipe 中的不同范围和版本