tens firstname) ; ⇒ ([0 10 \A] [1 20 \l] [2 30 \i]) (map str nums tens firstname) ; ⇒ ("010A" "120l" "230i") ;; To unzip, apply `map vector' or `map list' (apply map list (map vector nums tens firstname)) ;; ⇒ ((0 1 2) (10 20 30) (\A \l \i)) In Common Lisp: (defparameter nums '(1 2 3)) (defparameter tens '(10 20 30)) (defparameter firstname "Alice") (mapcar #'list nums tens) ;; ⇒ ((1 10) (2 20) (3 30)) (mapcar #'list nums tens (coerce firstname 'list)) ;; ⇒ ((1 10 #\A) (2 20 #\l) (3 30 #\i)) — truncates on shortest list ;; Unzips (apply #'mapcar #'list (mapcar #'list nums tens (coerce firstname 'list))) ;; ⇒ ((1 2 3) (10 20 30) (#\A #\l #\i)) Languages such as Python provide a function, older version (Python 2.*) allowed mapping over lists to get a similar effect. in conjunction with the operator unzips a list: >>> nums = [1, 2, 3] >>> tens = [10, 20, 30] >>> firstname = 'Alice' >>> zipped = zip(nums, tens) >>> zipped [(1, 10), (2, 20), (3, 30)] >>> zip(*zipped) # unzip [(1, 2, 3), (10, 20, 30)] >>> zipped2 = zip(nums, tens, list(firstname)) >>> zipped2 # zip, truncates on shortest [(1, 10, 'A'), (2, 20, 'l'), (3, 30, 'i')] >>> zip(*zipped2) # unzip [(1, 2, 3), (10, 20, 30), ('A', 'l', 'i')] >>> # mapping with `None' doesn't truncate; deprecated in Python 3.* >>> map(None, nums, tens, list(firstname)) [(1, 10, 'A'), (2, 20, 'l'), (3, 30, 'i'), (None, None, 'c'), (None, None, 'e')] Haskell has a method of zipping sequences but requires a specific function for each arity ( for two sequences, for three etc.), similarly the functions and are available for unzipping: -- nums contains an infinite list of numbers [1, 2, 3, ...] nums = [1..] tens = [10, 20, 30] firstname = "Alice" zip nums tens -- ⇒ [(1,10), (2,20), (3,30)] — zip, truncates infinite list unzip $ zip nums tens -- ⇒ ([1,2,3], [10,20,30]) — unzip zip3 nums tens firstname -- ⇒ [(1,10,'A'), (2,20,'l'), (3,30,'i')] — zip, truncates unzip3 $ zip3 nums tens firstname -- ⇒ ([1,2,3], [10,20,30], "Ali") — unzip Language comparison List of languages by support of zip: See also Map (higher-order function) References Articles with example Haskell code Articles with example Lisp (programming language) code Articles with example Clojure code Articles with example Python (programming language) code