-
[Python] zip함수로 두 리스트의 데이터 엮어주기코딩/파이썬 2023. 7. 31. 21:59반응형
이번 글에서 같은 길이를 가지는 두 개의 리스트 데이터를 하나로 엮어주는 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
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
https://smart-worker.tistory.com/56
반응형'코딩 > 파이썬' 카테고리의 다른 글
[Python] 초보자를 위한 cProfile로 코드 최적화하기 (0) 2023.08.01 [python] 딕셔너리에서 기본값 설정하기 (0) 2023.08.01 [Python] 파이썬 enumerate 함수로 For 문 돌리기 (0) 2023.07.31 [Python] 문자열 서식 지정, 포매팅 방식 및 format 함수 (0) 2023.07.30 Python의 예외 처리 방법: try, except, finally 이해하기 (0) 2023.07.30