Как сделать кортеж из списка в Scala? - PullRequest
0 голосов
/ 01 октября 2019

У меня есть список сказать - List("aa","1","bb","2","cc","3","dd","4")

Как составить список кортежей с четными и нечетными позициями: (aa,1),(bb,2),(cc,3),(dd,4)

Ответы [ 2 ]

6 голосов
/ 01 октября 2019

Надеюсь, это поможет.

val list = List("aa","1","bb","2","cc","3","dd","4")

val tuple =
list.grouped(2).map { e =>
  (e.head,e.last)
}.toList
4 голосов
/ 01 октября 2019

Мы должны рассмотреть случай списков странного размера, например, List("aa","1","bb","2","cc","3","dd"):

  • Должны ли мы вернуть List((aa,1), (bb,2), (cc,3), (dd,dd))?
  • Должны ли мы отбросить последний элемент и вернутьList((aa,1), (bb,2), (cc,3))?
  • Должны ли мы указать, что ошибка каким-то образом, возможно, с Option?
  • Должны ли мы потерпеть крах?

Вот пример возврата Option[List(String, String)] для обозначения ошибки:

def maybeGrouped(list: List[String]): Option[List[(String, String)]] =
  Try(
    list
      .sliding(2, 2)
      .map { case List(a,b) => (a, b) }
      .toList
  ).toOption
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...