РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
647 of 1245 menu

Метод partition

Метод partition разделяет итератор на две коллекции: в первую попадают элементы, для которых предикат вернул true, а во вторую - элементы, для которых предикат вернул false. Параметром метод принимает замыкание-предикат, которое определяет, в какую коллекцию попадёт элемент. Метод возвращает кортеж из двух коллекций.

Синтаксис

iterator.partition(predicate)

Пример

Давайте разделим вектор чисел на чётные и нечётные:

fn main() { let vec = vec![1, 2, 3, 4, 5]; let (even, odd): (Vec<i32>, Vec<i32>) = vec .into_iter() .partition(|x| x % 2 == 0); println!("{:?}", even); println!("{:?}", odd); }

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

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

Пример

Давайте разделим вектор строк по длине строки:

fn main() { let vec = vec!["a", "b", "c", "d", "e"]; let (short, long): (Vec<&str>, Vec<&str>) = vec .into_iter() .partition(|s| s.len() < 2); println!("{:?}", short); println!("{:?}", long); }

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

["a", "b", "c", "d", "e"] []

Пример

Давайте разделим вектор чисел на положительные и отрицательные:

fn main() { let vec = vec![1, 2, 3, 4, 5]; let (positive, negative): (Vec<i32>, Vec<i32>) = vec .into_iter() .partition(|x| x > &0); println!("{:?}", positive); println!("{:?}", negative); }

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

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

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

  • метод filter,
    который оставляет только элементы, удовлетворяющие предикату
  • метод collect,
    который собирает элементы итератора в коллекцию
  • метод unzip,
    который разделяет итератор пар на две коллекции
  • метод Iterator,
    который представляет базовый трейт для всех итераторов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить