name=['Ravi','Raju','Alex']
id=[1,2,3]
MATH=[30,40,50]
my_data=zip(name,id,MATH) # zip object
print(list(my_data))
Output
[('Ravi', 1, 30), ('Raju', 2, 40), ('Alex', 3, 50)]
We used list in above code.print(set(my_data))
Output
{('Alex', 3, 50), ('Ravi', 1, 30), ('Raju', 2, 40)}
Using tuple
print(tuple(my_data))
Output
(('Ravi', 1, 30), ('Raju', 2, 40), ('Alex', 3, 50))
name=['Ravi','Raju','Alex']
id=[1,2]
MATH=[30,40,50]
my_data=zip(name,id,MATH)
print(list(my_data))
Output
[('Ravi', 1, 30), ('Raju', 2, 40)]
* operator can be used to unzip
name=['Ravi','Raju','Alex']
id=[1,2,3]
MATH=[30,40,50]
my_data=zip(name,id,MATH)
name,id,mark=zip(*my_data)
print(name)
print(id)
print(mark)
Output
('Ravi', 'Raju', 'Alex')
(1, 2, 3)
(30, 40, 50)
How to zip three or more iterables and handle uneven lengths?
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
cities = ["New York", "Los Angeles", "Chicago"]
# Zipping three lists together
zipped_data = zip(names, ages, cities)
# Display the zipped output
for item in zipped_data:
print(item)
('Alice', 25, 'New York')
('Bob', 30, 'Los Angeles')
('Charlie', 35, 'Chicago')
We can include an example that demonstrates unzipping back into individual lists, especially useful for reorganizing data.
zipped_data = [('Alice', 25, 'New York'), ('Bob', 30, 'Los Angeles'), ('Charlie', 35, 'Chicago')]
# Unzipping
names, ages, cities = zip(*zipped_data)
print("Names:", names)
print("Ages:", ages)
print("Cities:", cities)
Names: ('Alice', 'Bob', 'Charlie')
Ages: (25, 30, 35)
Cities: ('New York', 'Los Angeles', 'Chicago')
Demonstrating how to use zip() with dictionaries can expand its applicability in real-world tasks.
keys = ["name", "age", "city"]
values = ["Alice", 25, "New York"]
# Creating a dictionary using zip
person = dict(zip(keys, values))
print(person)
{'name': 'Alice', 'age': 25, 'city': 'New York'}
When working with iterables of unequal lengths, the itertools.zip_longest function provides a way to fill missing values with a default.
from itertools import zip_longest
names = ["Alice", "Bob"]
ages = [25, 30, 35]
# Using zip_longest
zipped_data = zip_longest(names, ages, fillvalue="N/A")
# Display the zipped output
for item in zipped_data:
print(item)
('Alice', 25)
('Bob', 30)
('N/A', 35)
We can demonstrate how to use zip() for parallel iteration with conditional filtering:
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
cities = ["New York", "Los Angeles", "Chicago"]
# Parallel iteration with filtering
filtered_data = [(name, age, city) for name, age, city in zip(names, ages, cities) if age > 28]
print("Filtered Data:", filtered_data)
Filtered Data: [('Bob', 30, 'Los Angeles'), ('Charlie', 35, 'Chicago')]