這個問題在這里已經有了答案: 兩個串列的笛卡爾積 3 個答案 4天前關閉。
假設list1 = [1, 2, 3]和list2 = ["a", "b"]
我想將它們組合起來,以便得到一個像這樣的元組串列:
list3 = [(1, "a"), (1, "b"), (2, "a"), (2, "b"), (3, "a"), (3, "b")]
有沒有辦法簡潔地做到這一點?
uj5u.com熱心網友回復:
for ... yield使用 Scala 的運算式可以很容易地做到這一點。
for {
x <- list1
y <- list2
} yield {
(x, y)
}
這對flatMap和map呼叫去糖,所以它相當于
list1.flatMap { x => list2.map { y => (x, y) } }
如果您使用的是Scalaz,那么笛卡爾積只是Applicative串列實體的應用程式。使用適當的 Scalaz 匯入,這就足夠了
^(list1, list2) { (_, _) }
貓具有相似的功能,但語法不同:
import cats.syntax.all._
(list1, list2).tupled
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/493054.html
標籤:斯卡拉
