Python zip() (original) (raw)

The zip() function takes iterables (can be zero or more), aggregates them in a tuple, and returns it.

Example

languages = ['Java', 'Python', 'JavaScript']
versions = [14, 3, 6]

result = zip(languages, versions)


print(list(result))

# Output: [('Java', 14), ('Python', 3), ('JavaScript', 6)]

Syntax of zip()

The syntax of the zip() function is:

zip(*iterables)


zip() Parameters

Parameter Description
iterables can be built-in iterables (like: list, string, dict), or user-defined iterables

Recommended Reading: Python Iterators, __iter__ and __next__


zip() Return Value

The zip() function returns an iterator of tuples based on the iterable objects.


Example 1: Python zip()

number_list = [1, 2, 3]
str_list = ['one', 'two', 'three']

# No iterables are passed

result = zip()


# Converting iterator to list
result_list = list(result)
print(result_list)

# Two iterables are passed

result = zip(number_list, str_list)


# Converting iterator to set
result_set = set(result)
print(result_set)

Output

[] {(2, 'two'), (3, 'three'), (1, 'one')}


Example 2: Different number of iterable elements

numbersList = [1, 2, 3]
str_list = ['one', 'two']
numbers_tuple = ('ONE', 'TWO', 'THREE', 'FOUR')

# Notice, the size of numbersList and numbers_tuple is different

result = zip(numbersList, numbers_tuple)


# Converting to set
result_set = set(result)
print(result_set)

result = zip(numbersList, str_list, numbers_tuple)


# Converting to set
result_set = set(result)
print(result_set)

Output

{(2, 'TWO'), (3, 'THREE'), (1, 'ONE')} {(2, 'two', 'TWO'), (1, 'one', 'ONE')}


The * operator can be used in conjunction with zip() to unzip the list.

zip(*zippedList)

Example 3: Unzipping the Value Using zip()

coordinate = ['x', 'y', 'z']
value = [3, 4, 5]

result = zip(coordinate, value)
result_list = list(result)
print(result_list)

c, v =  zip(*result_list)


print('c =', c)
print('v =', v)

Output

[('x', 3), ('y', 4), ('z', 5)] c = ('x', 'y', 'z') v = (3, 4, 5)


Also Read: