Often you might be interested in zipping (or “merging”) together two lists in Python. Fortunately this is easy to do using the zip() function.
This tutorial shows several examples of how to use this function in practice.
Example 1: Zip Two Lists of Equal Length into One List
The following syntax shows how to zip together two lists of equal length into one list:
#define list a and list b a = ['a', 'b', 'c'] b = [1, 2, 3] #zip the two lists together into one list list(zip(a, b)) [('a', 1), ('b', 2), ('c', 3)]
Example 2: Zip Two Lists of Equal Length into a Dictionary
The following syntax shows how to zip together two lists of equal length into a dictionary:
#define list of keys and list of values keys = ['a', 'b', 'c'] values = [1, 2, 3] #zip the two lists together into one dictionary dict(zip(keys, values)) {'a': 1, 'b': 2, 'c': 3}
Example 3: Zip Two Lists of Unequal Length
If your two lists have unequal length, zip() will truncate to the length of the shortest list:
#define list a and list b a = ['a', 'b', 'c', 'd'] b = [1, 2, 3] #zip the two lists together into one list list(zip(a, b)) [('a', 1), ('b', 2), ('c', 3)]
If you’d like to prevent zip() from truncating to the length of the shortest list, you can instead use the zip_longest() function from the itertools library.
By default, this function fills in a value of “None” for missing values:
from itertools import zip_longest #define list a and list b a = ['a', 'b', 'c', 'd'] b = [1, 2, 3] #zip the two lists together without truncating to length of shortest list list(zip_longest(a, b)) [('a', 1), ('b', 2), ('c', 3), ('d', None)]
However, you can use the fillvalue argument to specify a different fill value to use:
#define list a and list b a = ['a', 'b', 'c', 'd'] b = [1, 2, 3] #zip the two lists together, using fill value of '0' list(zip_longest(a, b, fillvalue=0)) [('a', 1), ('b', 2), ('c', 3), ('d', 0)]
You can find the complete documentation for the zip_longest() function here.