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

Метод zip

Метод zip принимает второй итератор и возвращает новый итератор, который поочерёдно объединяет элементы обоих итераторов в кортежи вида (a, b). Параметром метод принимает итератор, который нужно объединить с текущим. Итерация прекращается, как только один из итераторов закончится.

Синтаксис

iter1.zip(iter2)

Пример

Давайте объединим два вектора чисел [1, 2, 3] и [4, 5, 6] в итератор пар:

fn main() { let vec1 = vec![1, 2, 3]; let vec2 = vec![4, 5, 6]; for (a, b) in vec1.iter().zip(vec2.iter()) { println!("({}, {})", a, b); } }

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

(1, 4) (2, 5) (3, 6)

Пример

Если итераторы имеют разную длину, то zip остановится на самом коротком. Давайте объединим векторы [1, 2, 3, 4, 5] и ["a", "b", "c"]:

fn main() { let nums = vec![1, 2, 3, 4, 5]; let letters = vec!["a", "b", "c"]; for (n, l) in nums.iter().zip(letters.iter()) { println!("({}, {})", n, l); } }

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

(1, "a") (2, "b") (3, "c")

Пример

Давайте соберём результат zip в вектор кортежей с помощью метода collect:

fn main() { let vec1 = vec![1, 2, 3]; let vec2 = vec![4, 5, 6]; let res: Vec<(i32, i32)> = vec1.iter().zip(vec2.iter()) .map(|(a, b)| (*a, *b)) .collect(); println!("{:?}", res); }

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

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

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

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