chunk-by для фильтров
Разбивает последовательность на подпоследовательности на основе замыкания.
Сигнатура
> chunk-by {flags} (closure)
Параметры
-
closure: Замыкание для выполнения.
Типы входных и выходных данных:
| вход | выход |
|---|---|
| list<any> | list<list<any>> |
| range | list<list<any>> |
Примеры
Разбить данные на группы значений больше нуля и остальных.
> [1, 3, -2, -2, 0, 1, 2] | chunk-by {|it| $it >= 0 }
╭───┬────────────╮
│ 0 │ ╭───┬───╮ │
│ │ │ 0 │ 1 │ │
│ │ │ 1 │ 3 │ │
│ │ ╰───┴───╯ │
│ 1 │ ╭───┬────╮ │
│ │ │ 0 │ -2 │ │
│ │ │ 1 │ -2 │ │
│ │ ╰───┴────╯ │
│ 2 │ ╭───┬───╮ │
│ │ │ 0 │ 0 │ │
│ │ │ 1 │ 1 │ │
│ │ │ 2 │ 2 │ │
│ │ ╰───┴───╯ │
╰───┴────────────╯
Найти повторения в строке
> [a b b c c c] | chunk-by { |it| $it }
╭───┬───────────╮
│ 0 │ ╭───┬───╮ │
│ │ │ 0 │ a │ │
│ │ ╰───┴───╯ │
│ 1 │ ╭───┬───╮ │
│ │ │ 0 │ b │ │
│ │ │ 1 │ b │ │
│ │ ╰───┴───╯ │
│ 2 │ ╭───┬───╮ │
│ │ │ 0 │ c │ │
│ │ │ 1 │ c │ │
│ │ │ 2 │ c │ │
│ │ ╰───┴───╯ │
╰───┴───────────╯
Разбить значения диапазона по предикату
> (0..8) | chunk-by { |it| $it // 3 }
╭───┬───────────╮
│ 0 │ ╭───┬───╮ │
│ │ │ 0 │ 0 │ │
│ │ │ 1 │ 1 │ │
│ │ │ 2 │ 2 │ │
│ │ ╰───┴───╯ │
│ 1 │ ╭───┬───╮ │
│ │ │ 0 │ 3 │ │
│ │ │ 1 │ 4 │ │
│ │ │ 2 │ 5 │ │
│ │ ╰───┴───╯ │
│ 2 │ ╭───┬───╮ │
│ │ │ 0 │ 6 │ │
│ │ │ 1 │ 7 │ │
│ │ │ 2 │ 8 │ │
│ │ ╰───┴───╯ │
╰───┴───────────╯
Примечания
chunk-by применяет заданное замыкание к каждому значению входного списка и объединяет в списки соседние элементы с одинаковым результатом замыкания.
Copyright © 2019–2026 The Nushell Project DevelopersLicensed under the MIT License.
https://www.nushell.sh/commands/docs/chunk-by.html