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

Функция sliding

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

Импорт

import kotlin.collections.sliding

Синтаксис

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

Пример

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

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

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

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

Пример

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

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

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

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

Пример

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

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

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

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

Пример

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

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

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

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

Пример

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

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

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

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

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

  • функцию windowed,
    которая предоставляет более гибкие возможности для работы с окнами
  • функцию chunked,
    которая разбивает коллекцию на части фиксированного размера
  • функцию groupBy,
    которая группирует элементы по заданному критерию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить