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

Метод unzip

Метод unzip преобразует итератор, состоящий из пар элементов, в пару коллекций. Он принимает итератор, элементами которого являются кортежи из двух значений, и возвращает кортеж из двух векторов: первый содержит все первые элементы пар, второй - все вторые элементы. Метод не принимает параметров и потребляет исходный итератор.

Синтаксис

iter.unzip()

Пример

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

fn main() { let pairs = vec![(1, 2), (3, 4), (5, 6)]; let (left, right): (Vec<i32>, Vec<i32>) = pairs.into_iter().unzip(); println!("{:?}", left); println!("{:?}", right); }

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

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

Пример

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

fn main() { let pairs = vec![("a", "b"), ("c", "d"), ("e", "f")]; let (left, right): (Vec<&str>, Vec<&str>) = pairs.into_iter().unzip(); println!("{:?}", left); println!("{:?}", right); }

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

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

Пример

Давайте применим unzip к результату метода zip, чтобы убедиться в обратимости операции:

fn main() { let left = vec![1, 2, 3]; let right = vec![4, 5, 6]; let pairs: Vec<(i32, i32)> = left.iter().cloned().zip(right.iter().cloned()).collect(); let (left2, right2): (Vec<i32>, Vec<i32>) = pairs.into_iter().unzip(); println!("{:?}", left2); println!("{:?}", right2); }

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

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

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

  • метод zip,
    который объединяет два итератора в итератор пар
  • метод collect,
    который собирает элементы итератора в коллекцию
  • метод partition,
    который разделяет итератор на две коллекции по предикату
  • метод map,
    который преобразует каждый элемент итератора
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить