gpt4 book ai didi

Scala 从列表中生成唯一的对

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

输入:

val list = List(1, 2, 3, 4)

所需的输出:
Iterator((1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4))

此代码有效:
for (cur1 <- 0 until list.size; cur2 <- (cur1 + 1) until list.size)
yield (list(cur1), list(cur2))

但它似乎不是最佳的,有没有更好的方法呢?

最佳答案

There's a .combinations method built-in :

scala> List(1,2,3,4).combinations(2).toList
res0: List[List[Int]] = List(List(1, 2), List(1, 3), List(1, 4), List(2, 3), List(2, 4), List(3, 4))

它返回一个 Iterator ,但我添加了 .toList只是为了打印结果。如果您想要元组形式的结果,您可以执行以下操作:
scala> List(1,2,3,4).combinations(2).map{ case Seq(x, y) => (x, y) }.toList
res1: List[(Int, Int)] = List((1,2), (1,3), (1,4), (2,3), (2,4), (3,4))

你也提到了唯一性,所以你可以申请 .distinct输入列表的唯一性不是函数的先决条件,因为 .combination不会为您进行重复数据删除。

关于Scala 从列表中生成唯一的对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26628082/

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