У меня есть список кортежей следующим образом:
[(8, 3, 9), (10, 3, 0), (-37, 4, 1)]
Я хотел бы отобразить этот список и одновременно распаковать его за один проход . Вот пример с двумя проходами (или, по крайней мере, я настоятельно полагаю, что это займет два прохода, если нет, то мы здесь закончили)
val l = List((8, 3, 9), (10, 3, 0), (-37, 4, 1))
val (list1, list2) = l.map({ el => (el._1, el._2) }).unzip
Конечно, я мог бы просто сделать это в императивном стиле, перебирая списки и добавляя в коллекцию, но есть ли способ сделать это кратким функциональным способом? Я предполагаю, что по существу мне понадобится ленивый map
, за которым следует нетерпеливый unzip
.