PYTHON

Python Zip Function: Syntax, Usage, and Examples

The Python zip function is a built-in utility that pairs elements from multiple iterables, such as lists or dictionaries, into tuples. It simplifies handling related data and is commonly used in loops, dictionary creation, and parallel iteration. The function is useful in various scenarios, including data transformation, grouping, and creating mappings between elements.

How to Use the Python Zip Function

The syntax of the zip function in Python is straightforward:

zip(iterable1, iterable2, ...)

Each item from the provided iterables is paired together into tuples. If the iterables have different lengths, zip stops at the shortest one.

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

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

What Does the Zip Function Do in Python?

The zip function merges elements from multiple iterables into tuples. It helps combine corresponding elements for easy processing.

How Does the Zip Function Work in Python?

The function takes iterables and returns an iterator. When iterated over, it produces tuples with one item from each iterable:

numbers = [10, 20, 30]
letters = ['x', 'y', 'z']

for pair in zip(numbers, letters):
    print(pair)

# Output:
# (10, 'x')
# (20, 'y')
# (30, 'z')

When to Use the Zip Function in Python

Iterating Through Multiple Lists

When processing multiple lists simultaneously, zip allows efficient parallel iteration.

names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]

for name, age in zip(names, ages):
    print(f"{name} is {age} years old.")

Creating Dictionaries

Using the zip function with dict(), you can create dictionaries quickly.

keys = ["name", "age", "city"]
values = ["Alice", 25, "New York"]

person_dict = dict(zip(keys, values))
print(person_dict)  # Output: {'name': 'Alice', 'age': 25, 'city': 'New York'}

Unzipping Data

By using the zip(*iterables) syntax, you can reverse a zip operation and extract original lists.

zipped_data = [(1, 'a'), (2, 'b'), (3, 'c')]
numbers, letters = zip(*zipped_data)

print(numbers)  # Output: (1, 2, 3)
print(letters)  # Output: ('a', 'b', 'c')

Examples of the Zip Function in Python

Zipping Two Lists

If you have two lists of related information, you can pair them together using zip.

students = ["John", "Lisa", "Mark"]
grades = [85, 90, 78]

student_grades = list(zip(students, grades))
print(student_grades)  # Output: [('John', 85), ('Lisa', 90), ('Mark', 78)]

Using Zip in a For Loop

The zip function works well in loops when processing multiple iterables simultaneously.

fruits = ["apple", "banana", "cherry"]
colors = ["red", "yellow", "dark red"]

for fruit, color in zip(fruits, colors):
    print(f"The {fruit} is {color}.")

Combining Zip with List Comprehensions

Zip is often used in list comprehensions for concise code.

numbers1 = [1, 2, 3]
numbers2 = [4, 5, 6]

sums = [x + y for x, y in zip(numbers1, numbers2)]
print(sums)  # Output: [5, 7, 9]

Learn More About the Zip Function in Python

Using Zip with the Dictionary Zip Function

You can use zip to merge two lists into key-value pairs in a dictionary.

countries = ["USA", "Canada", "Germany"]
capitals = ["Washington D.C.", "Ottawa", "Berlin"]

country_capitals = dict(zip(countries, capitals))
print(country_capitals)  # Output: {'USA': 'Washington D.C.', 'Canada': 'Ottawa', 'Germany': 'Berlin'}

Time Complexity of the Zip Function in Python

The time complexity of zip is O(N), where N is the length of the shortest iterable. This is because zip pairs elements one by one without extra operations.

Use of Zip Function in Python for Loop

The zip function is often used in for loops to iterate over multiple lists simultaneously.

cities = ["New York", "Los Angeles", "Chicago"]
temperatures = [75, 85, 68]

for city, temp in zip(cities, temperatures):
    print(f"{city} has a temperature of {temp}°F.")

Handling Unequal Length Lists

By default, zip stops at the shortest iterable. If you want to handle unequal lists, use itertools.zip_longest() instead.

from itertools import zip_longest

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

zipped = list(zip_longest(list1, list2, fillvalue='N/A'))
print(zipped)  # Output: [(1, 'a'), (2, 'b'), (3, 'N/A')]

Using Zip with Enumerate

If you need both index and zipped elements, use enumerate(zip(...)).

items = ["pencil", "eraser", "notebook"]
prices = [1.5, 0.5, 2.0]

for index, (item, price) in enumerate(zip(items, prices)):
    print(f"{index}: {item} costs ${price}")

Advanced Usage: Python Zip Function Two Lists

When working with large datasets, you can use the zip function in combination with other functions to process two lists efficiently.

list1 = [100, 200, 300]
list2 = [10, 20, 30]

results = [a - b for a, b in zip(list1, list2)]
print(results)  # Output: [90, 180, 270]

Python Zip Function Documentation

For more information, you can refer to the official Python documentation for zip:

help(zip)

Python Zip Function in Dictionary

Using zip with dictionary comprehension is a powerful way to create key-value pairs dynamically.

keys = ["one", "two", "three"]
values = [1, 2, 3]

num_dict = {k: v for k, v in zip(keys, values)}
print(num_dict)  # Output: {'one': 1, 'two': 2, 'three': 3}

Python Zip Function with Multiple Iterables

You can zip more than two iterables together.

names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
cities = ["New York", "San Francisco", "Chicago"]

for name, age, city in zip(names, ages, cities):
    print(f"{name}, {age}, lives in {city}.")

The Python zip function is a simple yet powerful tool for combining iterables. Whether you're working with lists, tuples, or dictionaries, it makes handling structured data easier and more efficient.

Learn to Code in Python for Free
Start learning now
button icon
To advance beyond this tutorial and learn Python by doing, try the interactive experience of Mimo. Whether you're starting from scratch or brushing up your coding skills, Mimo helps you take your coding journey above and beyond.

Sign up or download Mimo from the App Store or Google Play to enhance your programming skills and prepare for a career in tech.

You can code, too.

© 2025 Mimo GmbH