enumerate와 zip 함수란?
파이썬에는 iterable 객체가 있습니다. 순환할 수 있는 객체라는 뜻인데요. 정확한 정의가 궁금하시면 여기를 참고 부탁드립니다.
iterable 객체의 종류로는 자주 사용되는 list(리스트)를 포함하여 set과 tuple 같은 컬렉션 자료형이 있습니다. enumerate와 zip 함수는 이러한 컬렉션 자료형, 변수를 모아둔 배열 형태의 자료형을 처리하는데 굉장히 유용한 함수들입니다.
enumerate 함수는 배열을 입력값으로 받아서, 배열의 값과 순서를 튜플 형태 "(순서, 값)"로 반환해 주는 함수입니다. 주로 긴 배열을 인덱스로 다루고자 할 때 사용됩니다.
zip 함수는 여러 개의 배열의 각 원소를 위치별(element-wise)로 묶어서 튜플 형태로 묶어서 새로운 배열로 반환해 주는 함수입니다.
enumerate, zip 함수 사용법
enumerate 함수
enumerate 함수는 for문의 in 뒤에 사용합니다. 배열의 각 원소에 0번째부터 순서를 부여해서 (순서, 원소) 쌍의 tuple 형태로 반환합니다. 리스트뿐만 아니라 set과 tuple에도 적용 가능합니다.
list_a = ['사과', '바나나', '딸기', '오렌지']
set_a = set(list_a)
tuple_a = tuple(set_a)
for idx, element in enumerate(list_a):
print("element {}의 index: {}".format(element, idx))
# 위 코드의 결과값
element 사과의 index: 0
element 바나나의 index: 1
element 딸기의 index: 2
element 오렌지의 index: 3
zip 함수
zip 함수는 여러 개의 컬렉션 자료형을 인자를 줄 수 있습니다. 우선 리스트로 예를 들겠습니다. zip 함수를 사용하게 되면 각 리스트의 동일한 위치(순서)에 있는 원소들을 튜플 형태로 묶어서 새로운 값을 만들고 이 값들을 리스트로 반환해 줍니다. 마찬가지로 set과 tuple 모두 인자로 줄 수 있습니다.
list_a = [1,2,3,4,5]
list_b = ['a','b','c','d','e']
list_c = ['가','나','다','라','마']
new_list = list(zip(list_a, list_b, list_c))
print(new_list)
# 위 코드의 결과값
[(1, 'a', '가'), (2, 'b', '나'), (3, 'c', '다'), (4, 'd', '라'), (5, 'e', '마')]
zip 함수의 다른 활용법: 딕셔너리(dict) 자료형 만들기
파이썬 딕셔너리(dictionary)는 키(key)와 값(value)이 세미콜론(:)으로 연결되어 있는 컬렉션 자료형입니다. 직접 입력하여 작성하기가 꽤 귀찮습니다. 그러나 zip 함수를 활용하면 쉽게 만들 수 있습니다.
먼저 key값으로 활용하고 싶은 리스트와 value값으로 활용하고 싶은 리스트를 정의합니다. 이 두 개의 리스트를 zip 함수에 인자를 주고 dict 자료형으로 형변환하면 쉽게 dict 자료형을 만들 수 있습니다.
key_list = [1,2,3,4,5]
value_list = ['가','나','다','라','마']
new_dict = dict(zip(key_list, value_list))
print(new_dict)
# 위 코드의 결과값
{1: '가', 2: '나', 3: '다', 4: '라', 5: '마'}
단, zip 함수에 인자로 주는 리스트의 순서가 바뀌면 생성되는 dict 자료형의 key와 value이 서로 뒤바뀌니 순서에 유의해 주세요.
'Python > 기초' 카테고리의 다른 글
[파이썬/Python] Class의 정의와 사용법(feat. 함수와의 차이) (0) | 2023.07.11 |
---|---|
[파이썬/Python] 인코딩(encoding)에 대한 깔끔한 정리 (1) | 2023.07.09 |
[파이썬/Python] 함수의 정의와 활용에 대한 완벽 정리 (0) | 2023.07.08 |
[파이썬/Python] List Comprehension: 효율적인 리스트 생성 (0) | 2023.07.07 |
[파이썬/Python] 파일 쓰고 읽기: 파일 객체에 대한 총정리 (0) | 2023.07.07 |
댓글