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

Функция slidingWindow

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

Импорт

import kotlin.collections.slidingWindow

Синтаксис

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

Параметры

size - размер окна (количество элементов в каждом подсписке);

step - шаг перемещения окна (по умолчанию 1);

partialWindows - включать ли неполные окна в конце коллекции (по умолчанию false).

Пример

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

val numbers = listOf(1, 2, 3, 4, 5) val windows = numbers.slidingWindow(3, 1) for (window in windows) { println(window) }

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

[1, 2, 3] [2, 3, 4] [3, 4, 5]

Пример

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

val numbers = listOf(1, 2, 3, 4, 5) val windows = numbers.slidingWindow(2, 2) for (window in windows) { println(window) }

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

[1, 2] [3, 4]

Пример

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

val numbers = listOf(1, 2, 3, 4, 5) val windows = numbers.slidingWindow(3, 2, true) for (window in windows) { println(window) }

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

[1, 2, 3] [3, 4, 5] [5]

Пример

Работа со строками - создание n-грамм:

val text = "abcde" val trigrams = text.toList().slidingWindow(3) for (trigram in trigrams) { println(trigram.joinToString("")) }

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

abc bcd cde

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

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