List 是否存在从列表生成元组的scala列表操作?

List 是否存在从列表生成元组的scala列表操作?,list,scala,functional-programming,tuples,List,Scala,Functional Programming,Tuples,我正在尝试处理列表中的三元组。我必须这样做: for(i = 1; i < list.length-1; i++) { process( list[i-1], list[i], list[i+1] ) } 谢谢 Pablo的解决方案并不完全正确,您仍然需要将列表列表转换为元组列表: val data = List(1,2,3,4,5,6,7,8,9,10) val tuples = data.sliding(3).toList // tuples would be List(Lis

我正在尝试处理列表中的三元组。我必须这样做:

for(i = 1; i < list.length-1; i++)
{
   process( list[i-1], list[i], list[i+1] )
}

谢谢

Pablo的解决方案并不完全正确,您仍然需要将列表列表转换为元组列表:

val data = List(1,2,3,4,5,6,7,8,9,10)
val tuples = data.sliding(3).toList
// tuples would be List(List(1,2,3), List(2,3,4), List(3,4,5), List(4,5,6) ... )
val data = List(1,2,3,4,5,6,7,8,9,10)
val tuples = data.sliding(3).toList.collect{ case List(x,y,z) => (x,y,z) }
//--> tuples: List[(Int, Int, Int)] = List((1,2,3), (2,3,4), (3,4,5), ...

我知道你得到了你想要的答案,但技术上正确的答案是否定的。没有一种通用方法可以接受一个列表并返回变量算术的元组,因为目前无法在Scala中表示该类型签名。

这正是我要找的。将在SO允许的情况下尽快标记为“答案”。@Pablo Fernandez:这是不正确的,结果是元组:List[List[Int]=List(List(1,2,3),List(2,3,4),…正如Landei已经指出的,这个答案是不正确的,它没有给出元组列表,而是列表列表。问题显然是关于元组列表的!Landei的解决方案是正确的。感谢您的澄清。就我而言,Pablo的解决方案对我来说很好,但获得更多的洞察力总是很好的。我注意到nd设法解决了这个问题。不过我喜欢收集。
val data = List(1,2,3,4,5,6,7,8,9,10)
val tuples = data.sliding(3).toList.collect{ case List(x,y,z) => (x,y,z) }
//--> tuples: List[(Int, Int, Int)] = List((1,2,3), (2,3,4), (3,4,5), ...