728x90
Python의 zip은 여러 개의 iterable 객체를 묶어주는 함수입니다. 주어진 iterable들로부터 각각의 요소들을 순서대로 묶어 튜플로 반환합니다. zip은 가장 짧은 iterable이 모두 소진되었을 때 멈추게 됩니다.
zip 함수는 다음과 같은 형식으로 사용합니다:
zip(*iterables)
여기서 iterables은 묶을 iterable 객체들을 의미합니다. zip 함수는 iterables에 전달된 각각의 iterable 객체로부터 같은 인덱스의 요소들을 묶어서 튜플로 반환합니다.
예시를 통해 zip 함수를 이해해 보겠습니다.
names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30, 35]
scores = [90, 85, 95]
zipped = zip(names, ages, scores)
for item in zipped:
print(item)
# 출력결과
#('Alice', 25, 90)
#('Bob', 30, 85)
#('Charlie', 35, 95)
예제를 좀 더 살펴 보겠습니다.
# Initialize two lists
subjects1 = ["Java","Python","PHP"]
subjects2 = ['C#','CPP','C']
# Example 1: zip() function with out arguments
final = list(zip())
print(final)
#출력:
#[]
# Example 2: Passing single iterable
final = list(zip(subjects1))
print(final)
#출력:
#[('Java',), ('Python',), ('PHP',)]
# Example 3: Passing multiple iterable
final = list(zip(subjects1, subjects2))
print(final)
#출력:
#[('Java', 'C#'), ('Python', 'CPP'), ('PHP', 'C')]
# Example 4: Unequal list length
subjects1 = ["Java","Python","PHP","html"]
subjects2 = ['C#','CPP','C']
final = list(zip(subjects1, subjects2))
print(final)
#출력:
#[('Java', 'C#'), ('Python', 'CPP'), ('PHP', 'C')]
# Example 5: Traversing Parallelly
for i, j in zip(subjects1, subjects2):
print(i," ",j)
#출력:
#Java C#
#Python CPP
#PHP C
# Example 6: Unzipping
subjects1,subjects2=zip(*final)
print(subjects1)
print(subjects2)
#출력:
#('Java', 'Python', 'PHP')
#('C#', 'CPP', 'C')
# Example 7: Use zip() to convert the dictionary
keys = ["course", "fee", "duration"]
values = ['Python','4000','45 days']
final = dict(zip(keys, values))
print(final)
#출력:
#{'course': 'Python', 'fee': '4000', 'duration': '45 days'}
[참조]