[Python] zip함수로 두 리스트의 데이터 엮어주기
이번 글에서 같은 길이를 가지는 두 개의 리스트 데이터를 하나로 엮어주는 zip 함수에 대해서 알아보겠습니다. zip 함수는 여러 개의 리스트를 다루거나, 사전을 생성할 때 유용한 기능합니다. 동시에 코드를 간결하게 만들어 pythonic 한 코드를 만드는 내장 함수 입니다.
목차
1. zip 함수란?
- zip은 여러 개의 리스트의 동일한 위치에 있는 요소들을 묶어서 새로운 리스트를 생성한다.
zip 함수는 파이썬의 내장 함수로, 여러 개의 반복 가능한(iterable) 객체를 인자로 받아서 동일한 인덱스의 요소를 튜플 형태로 묶어주는 역할을 합니다. zip은 '압축한다'라는 의미처럼, 두 개의 리스트를 하나로 묶어줍니다. 여러 개의 리스트의 동일한 위치에 있는 요소들을 묶어서 새로운 리스트를 만들어냅니다.
# zip 함수 사용 예시
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
zipped = zip(list1, list2)
print(list(zipped)) # [(1, 'a'), (2, 'b'), (3, 'c')]
아래는 zip에 대한 공식 문서 링크 입니다. 자세한 내용은 아래 링크를 참고하십시요.
https://docs.python.org/3/library/functions.html#zip
Built-in Functions
The Python interpreter has a number of functions and types built into it that are always available. They are listed here in alphabetical order.,,,, Built-in Functions,,, A, abs(), aiter(), all(), a...
docs.python.org
2. zip 활용 방법 & 예시
다양한 zip의 활용 방법을 소개하겠습니다.
2.1. 다양한 자료형의 결합
- zip은 iterable한 모든 객체에 동시에 사용할 수 있습니다.
zip 함수는 리스트뿐만 아니라 모든 종류의 반복 가능한 객체에 적용할 수 있습니다. 예를 들어, 리스트와 튜플을 zip 함수를 이용해 결합할 수 있습니다.
# 리스트와 튜플을 zip 함수로 묶는 예시
list1 = [1, 2, 3]
tuple1 = ('a', 'b', 'c')
zipped = zip(list1, tuple1)
print(list(zipped)) # [(1, 'a'), (2, 'b'), (3, 'c')]
2.2. 길이가 다른 리스트를 zip함수로 묶기
- zip은 최소 길이의 리스트를 기준으로 데이터를 엮습니다.
길이가 다른 리스트를 zip 함수로 묶으면 어떻게 될까요? zip 함수는 길이가 짧은 리스트를 기준으로 묶어줍니다. 그래서 길이가 긴 리스트의 남은 요소는 무시됩니다.
# 길이가 다른 리스트를 zip 함수로 묶는 예시
list1 = [1, 2, 3, 4, 5]
list2 = ['a', 'b', 'c']
zipped = zip(list1, list2)
print(list(zipped)) # [(1, 'a'), (2, 'b'), (3, 'c')]
2.3. zip 함수의 결과 다시 분리하기
- zip(*zipped) 형태로 이미 zip한 결과를 *(asterisk)를 이용해 분리할 수 있습니다.
zip 함수를 사용해서 묶은 리스트는 다시 원래의 상태로 돌려놓을 수 있습니다. 이때는 zip 함수에 *(asterisk)를 붙여서 사용합니다. 이를 'unzipping'이라고 합니다.
# zip 함수로 묶은 리스트를 다시 분리하는 예시
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
zipped = zip(list1, list2)
unzipped_list1, unzipped_list2 = zip(*zipped)
print(list(unzipped_list1)) # [1, 2, 3]
print(list(unzipped_list2)) # ['a', 'b', 'c']
2.4. zip으로 두 리스트를 dict 으로 변경
- "dict( zip(l1, l2) )" 와 같이 두 리스트를 쉽게 dictionary 형태로 변경할 수 있습니다.
zip 함수는 두 개의 리스트를 튜플로 묶어주는 기능이 있기 때문에, 이를 활용하여 두 리스트를 사전(dict) 형태로 쉽게 바꿀 수 있습니다.
# zip 함수와 dict를 함께 사용하는 예시
keys = ['name', 'age', 'job']
values = ['Alice', 25, 'Engineer']
dictionary = dict(zip(keys, values))
print(dictionary) # Output: {'name': 'Alice', 'age': 25, 'job': 'Engineer'}
여기서 list1의 요소들이 키(key)가 되고, list2의 요소들이 값(value)이 되는 사전을 만들어낼 수 있습니다.
2.5. 여러 리스트를 동시에 순회하기
- 여러 리스트를 동시에 순회할 때 zip은 매우 유용합니다.
파이썬의 for 루프를 사용하여 리스트를 순회하면서 동일한 인덱스의 다른 리스트의 요소를 참조해야 할 때도 있습니다. 이럴 때 zip 함수를 사용하면 코드를 간결하게 만들 수 있습니다.
names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30, 35]
for name, age in zip(names, ages):
print(f'{name} is {age} years old.')
# Output:
# Alice is 25 years old.
# Bob is 30 years old.
# Charlie is 35 years old.
이 예제에서는 zip 함수가 names와 ages 리스트를 동시에 순회할 수 있게 해줍니다. 각 리스트의 동일 위치에 있는 요소들이 순서대로 출력됩니다.
https://smart-worker.tistory.com/47
[Python]List Comprehension을 활용한 코드 최적화
이번에는 Python의 강력한 기능 중 하나인 리스트 컴프리헨션(List Comprehension)에 대해 알아보겠습니다. 초보자가 사용하기에는 문법이 약간 복잡하지만, 한 번 알면 이해하고 활용하는 데 큰 어려
smart-worker.tistory.com
https://smart-worker.tistory.com/56
[Python] 파이썬 enumerate 함수로 For 문 돌리기
python을 이용해 for 루프를 돌릴 경우가 많습니다. 이 때 몇 회의 루프를 돌았는지, for 문 상에서 확인해야 되는 경우가 있는데요. enumerate는 이런 루프 횟수를 체크할 때 매우 유용한 함수이고, 매
smart-worker.tistory.com