Estoy tratando de obtener un valor de una lista anidada en Scala pero de alguna manera no puedo encontrar una solución.

He creado una lista como:

var list3 = List((1,2,3),(4,5,6),(7,8),(9,10,11,12))

Necesito 7 como salida.

En Python, para lo mismo, estoy creando una lista como

list3 = [[1,2,3],[4,5,6],[7,8],[9,10,11,12]]

Para obtener el resultado como 7, estoy usando

list3[len(list3) -2][len(list3) -4]

Sugiéreme cómo lograr lo mismo en Scala.

Gracias de antemano.

3
nambastha 14 nov. 2017 a las 18:02

2 respuestas

La mejor respuesta

Puede utilizar productElement como se muestra a continuación

scala> var list3 = List((1,2,3),(4,5,6),(7,8),(9,10,11,12))
list3: List[Product with Serializable] = List((1,2,3), (4,5,6), (7,8), (9,10,11,12))

scala> list3(list3.length -2).productElement(list3.length-4)
res0: Any = 7
0
Ramesh Maharjan 14 nov. 2017 a las 16:09

list3 no es una lista de listas, es una lista de tuplas . Puede crear una lista de listas de la siguiente manera:

var list3 = List(List(1,2,3),List(4,5,6),List(7,8),List(9,10,11,12))

Entonces, la versión Scala de su código Python funcionaría:

scala> list3(list3.size - 2)(list3.size - 4)
res3: Int = 7
2
Tzach Zohar 14 nov. 2017 a las 15:08