Функция sliding

Функция sliding создает последовательность подсписков фиксированного размера, которые перемещаются по исходной коллекции с заданным шагом. В первый параметр передается размер окна, во второй параметр - шаг перемещения окна, в третий параметр - флаг частичных окон.

Импорт

kotlinimport kotlin.collections.sliding

Синтаксис

kotlinfun <T> Iterable<T>.sliding(
  size: Int,
  step: Int = 1,
  partialWindows: Boolean = false
): List<List<T>>

Пример

Создадим скользящие окна размера 3 с шагом 1 для списка чисел:

kotlinval numbers = listOf(1, 2, 3, 4, 5, 6, 7)
val windows = numbers.sliding(3, 1)
println(windows)

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

kotlinList<List<Int>> [[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7]]

Пример

Создадим скользящие окна размера 2 с шагом 2 для списка символов:

kotlinval chars = listOf('a', 'b', 'c', 'd', 'e')
val windows = chars.sliding(2, 2)
println(windows)

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

kotlinList<List<Char>> [['a', 'b'], ['c', 'd'], ['e']]

Пример

Создадим скользящие окна размера 3 с шагом 2 и отключенными частичными окнами:

kotlinval data = listOf(10, 20, 30, 40, 50)
val windows = data.sliding(3, 2, false)
println(windows)

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

kotlinList<List<Int>> [[10, 20, 30], [30, 40, 50]]

Пример

Создадим скользящие окна размера 3 с шагом 2 и включенными частичными окнами:

kotlinval data = listOf(10, 20, 30, 40, 50)
val windows = data.sliding(3, 2, true)
println(windows)

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

kotlinList<List<Int>> [[10, 20, 30], [30, 40, 50], [50]]

Пример

Использование функции sliding для вычисления скользящего среднего:

kotlinval values = listOf(5.0, 7.0, 3.0, 8.0, 2.0)
val movingAverages = values.sliding(3, 1)
  .map { window -> window.average() }
println(movingAverages)

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

kotlinList<Double> [5.0, 6.0, 6.0, 4.333333333333333]

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

  • функцию windowed,
    которая предоставляет более гибкие возможности для работы с окнами
  • функцию chunked,
    которая разбивает коллекцию на части фиксированного размера
  • функцию groupBy,
    которая группирует элементы по заданному критерию