4

私はscalaが初めてで、最初の値が2番目の値よりも大きいタプル要素のリストから削除しようとしています。

たとえば、リストから:

val list =  List[(Int,Int)]((1,3),(3,1),(2,2)) 

リストを取得したい:

val list =  List[(Int,Int)]((1,3),(2,2)) 

そこで、次の行を使用しました。

var newList = List[(Int, Int)]()
for (element <- list) {
    if (element._1 <= element._2) {
        newList ::= element;
    }
}

しかし、scala は非常に長く感じます..もっと短い方法はありますか?

4

3 に答える 3

10

twillouer および tzofia のソリューションと同様ですが、パターン マッチングを使用します。

list filter { case (a, b) => a <= b }
于 2013-02-06T16:44:19.983 に答える
6

あなたは簡単に行うことができます:

list.filter(element => element._1 <= element._2)

フィルタ関数は、指定されたブール条件を満たさない要素を除外します。

于 2013-02-06T16:43:13.513 に答える
3

次のようにフィルターを使用できます。

scala> val list =  List[(Int,Int)]((1,3),(3,1),(2,2)) 
list: List[(Int, Int)] = List((1,3), (3,1), (2,2))

scala>  val newList = list.filter(a => a._1 <= a._2)
newList: List[(Int, Int)] = List((1,3), (2,2))

または filterNot の例:

scala> val newList = list.filterNot(a => a._1 > a._2)
newList: List[(Int, Int)] = List((1,3), (2,2))
于 2013-02-06T16:42:38.267 に答える