В Racket есть несколько методов преобразования двух списков в список пар. В этой статье блога вы познакомитесь с различными подходами, приведя попутно примеры кода. К концу вы получите четкое представление о различных методах выполнения этой задачи в Racket.
Метод 1. Использование mapи cons:
Один простой метод – использовать функцию mapвместе с . 9функция. Функция mapприменяет заданную процедуру к соответствующим элементам одного или нескольких списков, а функция consсоздает пару из двух значений.
(define (pair-up-lists lst1 lst2)
(map cons lst1 lst2))
Пример использования:
(pair-up-lists '(1 2 3) '(a b c)) ; Output: '((1 . a) (2 . b) (3 . c))
Метод 2. Использование рекурсивной функции.
Другой подход предполагает написание рекурсивной функции для объединения списков элемент за элементом.
(define (pair-up-lists lst1 lst2)
(cond
[(or (empty? lst1) (empty? lst2)) '()]
[else (cons (list (first lst1) (first lst2))
(pair-up-lists (rest lst1) (rest lst2)))]))
Пример использования:
(pair-up-lists '(1 2 3) '(a b c)) ; Output: '((1 a) (2 b) (3 c))
Метод 3: использование понимания for/list.
Racket предоставляет понимание for/list, которое позволяет генерировать список на основе заданного шаблона. Мы можем использовать эту функцию, чтобы объединить два списка в список пар.
(define (pair-up-lists lst1 lst2)
(for/list ([x lst1] [y lst2])
(cons x y)))
Пример использования:
(pair-up-lists '(1 2 3) '(a b c)) ; Output: '((1 . a) (2 . b) (3 . c))