2016-10-06 17 views
1

私はリストのリストを持っていますList[List[Int] to n]Lists[Int]はサイズが異なり、それらの間にすべて値を掛けたいと思います。 リスト(List(1,2,3)、List(4,5)、List(6))の場合リストのリストの要素を互いに掛け合わせます

1 * 4 * 6,1 * 5 * 6,2 * 4 * 6、 2 * 5 * 6、* 6 * 4 3、* 5 3 * 6

などと戻り結果値List[24, 30, 48, 60, 72, 90]

答えて

4

の結果のリストとしてあなたはこのようfoldLeft使用してそれを行うことができます。

list.foldLeft(List(1)) { 
    case (acc, item) => acc.flatMap(v => item.map(_*v)) 
} 

説明

Bの各項目について

def mul(a:List[Int], b:List[Int]) = b.flatMap (item => a.map(_*item)) 

この方法は、B

の現在の値を乗じた今、私たちは適用することができますから項目のリストを生成します:0

2つのリストのペアのすべての可能な乗算を生産する方法を定義できますList(1)

+0

の初期値を与えるリストのすべての要素にこのプロシージャは、本当に私がしたいです。 – Dmitrii

関連する問題