Python Zip Example | Python Zip() Function Tutorial

Python Zip Example | Python Zip() Function Tutorial

Python Zip Example | Python Zip() Function Tutorial .The zip() function in Python programming is a built-in standard function that takes multiple iterables or containers as parameters. An iterable in Python is an object that can be iterated or stepped through like a collection.

The zip() function is used to map the same indexes of more than one iterable. Mapping these indexes will generate a zip object.

How zip function works?

The zip function pairs the first elements of each iterator together then pairs the second elements together and so on.

If the iterables in the zip function are not the same length, then the smallest length iterable decides the length of the generated output.

Syntax:

zip(iterable0, iterable1, interable2, …)

Iterables can be Python lists, dictionary, strings, or any iterable object.

In the syntax above, the iterable0, iterable1, etc. are the iterator objects that we need to join using the zip function.

Example:

Consider the following snippet, where we have three iterables and the zip function joins them together.

x = ("Joey", "Monica", "Ross")
 
y = ("Chandler", "Pheobe")
 
z = ("David", "Rachel", "Courtney")
 
result = zip(x, y, z)
 
print(result)
 
print(tuple(result))

Output:

(('Joey', 'Chandler', 'David'), ('Monica', 'Pheobe', 'Rachel'))

In the above example, we defined three iterators of different lengths. The first elements of all of them are joined together, similarly, the second elements of all of them are joined together.

But there is no third element in the iterator y, therefore, the third elements of remaining iterators are not included in the output object.

This is why we said before that the length of the output is determined by the length of the smallest iterator which is 2 in this case.

The tuple() function converts the zip object to a tuple.

If no parameters are passed to the function, an empty iterable will be generated. For example, the result of print(tuple(zip())) will be ():

Convert two lists to a dictionary

To convert two lists to a dictionary using the zip function, you will join the lists using the zip function as we did, then you can convert them to a dictionary.

Suppose we have two lists as follows:

coin = ('Bitcoin', 'Ether', 'Ripple', 'Litecoin')
 
code = ('BTC', 'ETH', 'XRP', 'LTC')

So we will zip the list and then use the dict() function to convert it to a dictionary:

dict(zip(coin, code))

The output will be:

{'Bitcoin': 'BTC', 'Ether': 'ETH', 'Ripple': 'XRP', 'Litecoin': 'LTC'}

Zip function on three/multiple lists

You can pass multiple iterables to the zip function of same or different types. In the following example, we defined three lists (all are of the same length) but the data type of the items in each list is different.

Example:

list_a = ['Bitcoin', 'Ethereum', 'Ripple', 'Litecoin', 'Bitcoin-cash']
 
list_b = ['BTC', 'ETH', 'XRP', 'LTC', 'BCH']
 
list_c = ['11605', '271', '0.335', '102', '347']
 
result = zip(list_a, list_b, list_c)
 
print(tuple(result))

Output:

(('Bitcoin', 'BTC', '11605'), ('Ethereum', 'ETH', '271'), ('Ripple', 'XRP', '0.335'), ('Litecoin', 'LTC', '102'), ('Bitcoin-cash', 'BCH', '347'))

Similarly, we can join more than three iterables using the zip() function the same way.

Zip different length lists

When the arguments in the zip() function are different in length, the output object length will equal the length of the shortest input list.

Consider the following example to get a clearer view:

Example:

list_a = [1, 2, 3, 4, 5]
 
list_b = ['one', 'two', 'three']
 
result = zip(list_a, list_b)
 
print(tuple(result))

Output:

((1, 'one'), (2, 'two'), (3, 'three'))

In this example, list_a has 5 elements and list_b has 3 elements. The iterator will stop when it reaches the third element. Therefore, we have 3 tuples in the output tuple.

 

Zip function asterisk (Unzip)

The asterisk in a zip() function converts the elements of the iterable into separate elements. For example: if a = [a1, a2, a3] then zip(*a) equals to ((‘a’, ‘a’, ‘a’), (‘1’, ‘2’, ‘3’)).

In other words, we can say the asterisk in the zip function unzips the given iterable. That’s why the elements in list “a” are unzipped or extracted.

Consider the following example:

Example:

a = ['a1', 'a2', 'a3']
 
r = zip(*a)
 
print(tuple(r))

Output:

(('a', 'a', 'a'), ('1', '2', '3'))

Zip a matrix

A matrix is a multidimensional array of mn, where *m represents the number of rows and n represents the number of columns.

In Python, we can use the zip function to find the transpose of the matrix. The first step is to unzip the matrix using the * operator and finally zip it again as in the following example:

mat = [[1,2,3], [4,5,6]]
 
trans_mat = zip(*mat)
 
print(tuple(trans_mat))

Output:

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

In this example, the matrix is a 2*3 matrix meaning that it has 2 rows and 3 columns. On taking the transpose of the matrix, there will be 3 rows and 2 columns.

Similarly, if we have 1 row and 3 columns in a matrix as:

[[1, 2, 3]]

On taking the transpose, we should have 3 rows and 1 column. Consider the following snippet:

Example:

mat = [[1,2,3]]
 
trans_mat = zip(*mat)
 
print(tuple(trans_mat))

Output:

((1,), (2,), (3,))

Iterate through two lists in parallel

We can also iterate through two lists simultaneously using the zip function. This is demonstrated in the following line of code:

Example:

list_1 = ['Numpy', 'asyncio', 'cmath', 'enum', 'ftplib']
 
list_2 = ['C', 'C++', 'Java', 'Python']
 
for i, j in zip(list_1, list_2):
 
    print(i, j)

Output:

Numpy C
 
asyncio C++
 
cmath Java
 
enum Python

In the above example, we have two different lists. The for loop uses two iterative variables to iterate through the lists that are zipped together to work in parallel.

 

Zip a list of floats

The zip function also works on floating-point numbers. The floating-point numbers contain decimal point like 10.3, 14.44, etc.

In this section, we will create an example where zip function iterates through a list of floats:

>>> float_list1 = [12.3, 10.99, 3.33, 2.97]
 
>>> float_list2 = [78.13, 0.89, 4.6, 0.7]
 
>>> float_zip = zip(float_list1, float_list2)
 
>>> print(tuple(float_zip))

Output:

((12.3, 78.13), (10.99, 0.89), (3.33, 4.6), (2.97, 0.7))

Pass a single iterable

If one iterable is passed in the arguments of zip() function, there would be one item in each tuple. This is demonstrated below:

Example:

list_1 = ['C', 'C++', 'Python', 'Java']
 
list_zip = zip(list_1)
 
print(tuple(list_zip))

Output

(('C',), ('C++',), ('Python',), ('Java',))

Output to a file

To save the output from the zip function into a file. Consider the following example:

The first step is to open a file (we will use the append mode so nothing of existing content will be deleted). Use the following line:

f = open("zipOutput.txt", "a+")

If the file doesn’t exist, it will be created.

Now let’s create two lists to zip together.

list_1 = ['C', 'C++', 'Python', 'Java']
 
list_2 = ['Solidity', 'Android', 'Php', 'Kotlin']

Finally, use the for loop to iterate through lists in zip function and write the result in the file (after converting a tuple to string):

for i in zip(list_1, list_2):
 
    f.write(str(i))

Now close the file and check the saved data.

f.close()

The following will be the contents of the file:

Also, there is a shorter code instead of using the for loop. We can convert the zip object to a tuple then to a string and write the string to the file:

f.write(str(tuple(zip(list_1,list_2))))

It will lead to the same result.

Working with zip function in Python is pretty neat and easy. The idea is about merging iterables together which comes handy in many cases. I hope you find the tutorial useful.

Keep coming back.

Further reading:

Building a Blockchain with Python - Full

Web Scraping with Python

What is TensorFrames? TensorFlow + Apache Spark

How to Make a Discord Bot in Python

WebScraping With Python, Beautiful Soup, and Urllib3

How to Build an E-commerce Website with Django and Python

Seaborn Heatmap Tutorial (Python Data Visualization)

python

Bootstrap 5 Complete Course with Examples

Bootstrap 5 Tutorial - Bootstrap 5 Crash Course for Beginners

Nest.JS Tutorial for Beginners

Hello Vue 3: A First Look at Vue 3 and the Composition API

Building a simple Applications with Vue 3

Deno Crash Course: Explore Deno and Create a full REST API with Deno

How to Build a Real-time Chat App with Deno and WebSockets

Convert HTML to Markdown Online

HTML entity encoder decoder Online

Basic Data Types in Python | Python Web Development For Beginners

In the programming world, Data types play an important role. Each Variable is stored in different data types and responsible for various functions. Python had two different objects, and They are mutable and immutable objects.

How To Compare Tesla and Ford Company By Using Magic Methods in Python

Magic Methods are the special methods which gives us the ability to access built in syntactical features such as ‘<’, ‘>’, ‘==’, ‘+’ etc.. You must have worked with such methods without knowing them to be as magic methods. Magic methods can be identified with their names which start with __ and ends with __ like __init__, __call__, __str__ etc. These methods are also called Dunder Methods, because of their name starting and ending with Double Underscore (Dunder).

Python Programming: A Beginner’s Guide

Python is an interpreted, high-level, powerful general-purpose programming language. You may ask, Python’s a snake right? and Why is this programming language named after it?

Hire Python Developers

Are you looking for experienced, reliable, and qualified Python developers? If yes, you have reached the right place. At **[HourlyDeveloper.io](https://hourlydeveloper.io/ "HourlyDeveloper.io")**, our full-stack Python development services...

Python any: How to Check If Element is Iterable or Not

Python any() function returns True if any element of an iterable is True otherwise any() function returns False. The syntax is any().