How To Zip Lists In Python

In Python, the zip() function is a built-in function that is used to combine two or more iterable objects (like lists, tuples, or sets) into a single iterable. This is especially useful when you want to loop through multiple lists simultaneously, or if you want to create a dictionary from two separate lists, where one list contains keys and the other contains values. In this blog post, we will learn how to use the zip() function in Python to combine two or more lists.

Basic usage of the zip() function

The syntax for using the zip() function is quite simple. You just need to provide the lists (or other iterables) that you want to combine as arguments to the function. Here’s an example:

    list1 = ['a', 'b', 'c']
    list2 = [1, 2, 3]

    zipped = zip(list1, list2)
    

In this example, we have two lists: list1 contains some characters, and list2 contains some numbers. We use the zip() function to combine these two lists into a single iterable called zipped.

However, the zip() function doesn’t return a list directly. Instead, it returns a zip object. To convert this zip object into a list or tuple, you can use the list() or tuple() functions, like this:

    zipped_list = list(zipped)
    print(zipped_list)  # Output: [('a', 1), ('b', 2), ('c', 3)]
    

Looping through zipped lists

Once you’ve zipped your lists together, you can loop through the combined list using a for loop. Here’s an example that demonstrates how to do this:

    for item1, item2 in zip(list1, list2):
        print(item1, item2)
    

In the example above, we’re using tuple unpacking to assign the values of the zipped elements to the variables item1 and item2. This allows us to easily access the individual elements from each list within the loop.

Zipping lists of different lengths

If you try to zip lists of different lengths, the zip() function will stop creating pairs when the shortest list has been exhausted. For example:

    list3 = ['x', 'y']

    zipped_diff_lengths = list(zip(list1, list3))
    print(zipped_diff_lengths)  # Output: [('a', 'x'), ('b', 'y')]
    

In this example, list1 has three elements, but list3 has only two. The zip() function stops creating pairs after the second element, effectively truncating the longer list.

Unzipping lists

If you need to unzip a zipped list back into its original lists, you can use the * operator, followed by the zip() function. Here’s an example:

    unzipped = list(zip(*zipped_list))
    print(unzipped)  # Output: [('a', 'b', 'c'), (1, 2, 3)]
    

In this example, we’re using the * operator to unpack the zipped_list into its original lists. The result is a list of tuples, which can be easily converted back into separate lists if needed.

Conclusion

In this blog post, we learned how to zip and unzip lists in Python using the built-in zip() function. Zipping lists together is a powerful tool for combining and manipulating data from multiple iterable objects. Just remember that when zipping lists of different lengths, the resulting zipped list will be truncated based on the shortest input list.