НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
420 of 1310 menu

Функция unzip

Функция unzip выполняет разделение коллекции, состоящей из объектов Pair, на два отдельных списка. Первый список будет содержать первые элементы всех пар, второй список - вторые элементы всех пар. Функция возвращает объект Pair, содержащий два списка List.

Импорт

import kotlin.collections.unzip

Синтаксис

inline fun <T, R> Iterable<Pair<T, R>>.unzip(): Pair<List<T>, List<R>>
inline fun <T, R> Array<out Pair<T, R>>.unzip(): Pair<List<T>, List<R>>

Поддерживаемые типы коллекций

Функция unzip работает со следующими типами коллекций:

  • Iterable<Pair<T, R>>
  • Array<Pair<T, R>>
  • List<Pair<T, R>>
  • Set<Pair<T, R>>
  • MutableList<Pair<T, R>>
  • MutableSet<Pair<T, R>>

Для Map функция unzip не применяется, так как Map уже представляет собой коллекцию пар ключ-значение, но имеет собственные методы для работы с ключами и значениями.

Пример

Разделим список пар чисел на два отдельных списка:

val pairs = listOf(Pair(1, 'a'), Pair(2, 'b'), Pair(3, 'c')) val (numbers, letters) = pairs.unzip() println("Numbers: $numbers") println("Letters: $letters")

Результат выполнения кода:

Numbers: [1, 2, 3] Letters: ['a', 'b', 'c']

Пример

Разделим массив пар строк на два отдельных списка:

val pairsArray = arrayOf( Pair("apple", "red"), Pair("banana", "yellow"), Pair("grape", "purple") ) val result = pairsArray.unzip() val fruits = result.first val colors = result.second println("Fruits: $fruits") println("Colors: $colors")

Результат выполнения кода:

Fruits: ["apple", "banana", "grape"] Colors: ["red", "yellow", "purple"]

Пример

Работа с множеством пар:

val pairsSet = setOf( Pair(10, 100), Pair(20, 200), Pair(30, 300) ) val (firstValues, secondValues) = pairsSet.unzip() println("First values: $firstValues") println("Second values: $secondValues")

Результат выполнения кода:

First values: [10, 20, 30] Second values: [100, 200, 300]

Пример

Использование деструктуризации для получения результата:

val data = listOf( Pair("John", 25), Pair("Alice", 30), Pair("Bob", 28) ) val (names, ages) = data.unzip() println("Names: $names") println("Ages: $ages")

Результат выполнения кода:

Names: ["John", "Alice", "Bob"] Ages: [25, 30, 28]

Смотрите также

  • функцию zip,
    которая объединяет две коллекции в одну коллекцию пар
  • функцию partition,
    которая разделяет коллекцию на две по условию
  • функцию flatMap,
    которая преобразует и объединяет элементы коллекции
  • функцию map,
    которая преобразует элементы коллекции
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить