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.

Quick Answer: How to Use the zip() Function in Python

The zip() function takes two or more iterables (like lists or tuples) and combines their corresponding elements into an iterator of tuples. It's most commonly used to loop over multiple lists at the same time.

Syntax:zip(iterable1, iterable2, ...)

The zip function stops when the shortest iterable is exhausted. The result is an iterator, so you often use it directly in a for loop or convert it to a list with list().

Example:

# Two lists with related data
students = ["Alice", "Bob", "Charlie"]
grades = [88, 92, 75]

# Use zip to iterate over both lists simultaneously
for student, grade in zip(students, grades):
    print(f"{student}'s grade is {grade}")

# Outputs:
# Alice's grade is 88
# Bob's grade is 92
# Charlie's grade is 75

# To see the raw output, convert it to a list
zipped_list = list(zip(students, grades))
print(zipped_list)
# Outputs: [('Alice', 88), ('Bob', 92), ('Charlie', 75)]

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.

Key Takeaways for the Python zip() Function

  • It Returns an Iterator: zip() does not return a list or tuple directly. It returns a memory-efficient zip object (an iterator). You must use a constructor like list() or tuple() to see the contents all at once.
  • It Stops at the Shortest Iterable: The zip() function will stop creating pairs as soon as one of the input iterables runs out of items.
  • Can Be "Unzipped": You can reverse the zipping process by using the operator with zip() (e.g., unzipped = zip(*zipped_list)).
  • Great for Creating Dictionaries: The combination of dict(zip(keys, values)) is the standard Pythonic way to create a dictionary from two lists.
  • Can Handle More Than Two Iterables: You are not limited to two iterables; zip() can combine three, four, or more sequences simultaneously.
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

Reach your coding goals faster