# Zip Command ##### Command Categories (All commands)

Zip( <Expression>, <Var1>, <List1>, <Var2>, <List2>, ...)
Creates list of objects obtained by substitution of variables in the expression by elements of corresponding lists. If the number of variables matches the number of lists, each variable is taken from the following list. If the number of variables exceeds number of lists by one, the last variable takes values from 1, 2, 3, ..., k where k is the length of the shortest list. Length of the resulting list is minimum of lengths of input lists.
Example: Let P, Q, R, S be some points. `Zip(Midpoint(A, B), A, {P, Q}, B, {R, S})` returns a list containing midpoints of segments PR and QS.
Example: Let list1={x^2, x^3, x^6} be a list of polynomials. `Zip(Degree(a), a, list1)` returns the list {2, 3, 6}.
Example: Let list1={1, 2, 5} be a list of numbers. `Zip(Simplify(a*x^(b-1)), a, list1,b)` returns the list {1, 2x, 5x²}.

Note: In each list the elements must be of the same type.

## New possibility > 5.0.258 , functions allowed as variables

Example: `Zip(f(2), f, {x+1,x+3})` returns the list {3, 5}.

It's actually enough to provide a single list to Zip(). This makes it a shorter alternative to Sequence() when all you want is to traverse a list. For example, `Zip(a^2, a, listOfNumbers)` is much shorter than `Sequence(Element(listOfNumbers, a)^2, a, 1, Length(listOfNumbers))` (albeit in this case it's easier to just do `listOfNumbers^2`.) Hint: Zip() is similar to a construct known as "map" in other programming languages.