Привет, ребята, у меня есть список кортежей пар, List[(String,String)]
и хотят, чтобы сгладить его в список строк, List[String]
Scala Список кортежей плоский список
Любая помощь приветствуется.
Привет, ребята, у меня есть список кортежей пар, List[(String,String)]
и хотят, чтобы сгладить его в список строк, List[String]
Scala Список кортежей плоский список
Любая помощь приветствуется.
Некоторые из вариантов может быть: конкатенации:
list.map(t => t._1 + t._2)
один за другим чередованием (после того, как Ваш комментарий, кажется, вы просили это):
list.flatMap(t => List(t._1, t._2))
раскол и добавить их :
list.map(_._1) ++ list.map(_._2)
спасибо, я попробую его –
Имейте в виду, что третий вариант довольно неэффективен: он проходит один и тот же список дважды, чем добавляет список к другому, который имеет линейную сложность. – stefanobaghino
Ну, вы всегда можете использовать flatMap, как в:
list flatMap (x => List(x._1, x._2))
Хотя ваш вопрос немного расплывчатый.
Try:
val tt = List(("John","Paul"),("George","Ringo"))
tt.flatMap{ case (a,b) => List(a,b) }
Это приводит к:
Списка (Джон, Пол, Джордж, Ринго)
В целом для списков кортежей любой арности, рассмотрят это,
myTuplesList.map(_.productIterator.map(_.toString)).flatten
Обратите внимание: productIterator
отличает все типы в кортеже до Any
, поэтому мы возвращаем значения здесь String
.
See -
https://stackoverflow.com/a/43716004/4610065
В данном случае -
import syntax.std.tuple._
List(("John","Paul"),("George","Ringo")).flatMap(_.toList)
Как бы вы из двух строк в одну строку? Мы не знаем, как вы хотите их комбинировать. –
не очень scala эти угловые скобки ... – soulcheck
хорошо, у вас есть кортеж из 2-х строк, т. Е. <«Иоанн,« Павел »> и после некоторого сглаживания .... Список ...« Джон »,« Пол » –