# Zip Command

From GeoGebra Manual

- 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}*.

## Comments

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.