我有两个列表dest(包含:x)和点(x,y)
dest:List[Int] and Points:List[(Int,Int)]
我想过滤目标中的元素,如果它存在于点(x == points._1) i
var newl:List[Int] = List()
for(x<-dest) if(!points.filter(_._1==x).isEmpty) newl=newl:+x
我觉得必须有一个更好的简洁方式与存在但元组使它复杂。那么最好的办法是什么呢?
答案 0 :(得分:7)
这是一个简洁的方法:
val dest= List(1,2,4,5)
val points = List((1,3), (2,3) , (3,4))
val newl = dest.filter{d => points.exists(_._1 == d)} // returns List(1, 2)
以下是复杂性更好的顺序:
val dest= List(1,2,4,5)
val points = List((1,3), (2,3) , (3,4))
val xs = points.map{_._1}.toSet
val newl = dest.filter(xs.contains(_))