티스토리 뷰

728x90

zip 함수의 경우 두개 이상의 그룹의 데이터를 서로 엮어주는 파이썬의 내장 함수이다. 

 

zip 함수는 여러 개의 순회 가능한(iterable) 객체를 인자로 받고, 각 객체가 담고 있는 원소를 튜플의 형태로 차례로 접근할 수 있는 반복자(iterator)를 반환한다. 

 

프로그래머스>월간코드챌린지시즌1>내적

길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.

def solution(a, b):

    return sum([x*y for x, y in zip(a,b)])

두 정수 배열 a, b를 zip 함수를 이용하여 (a[0], b[0])과 같이 튜플의 형태로 사용할 수 있다. 

따라서 해당 튜플에 for문을 이용하여 x, y로 받아서 사용할 수 있게 된다. 

 

unzip

zip 함수로 엮어 놓은 데이터를 다시 해체(unzip)하고 싶을 때도 zip 함수를 사용하면 된다. 

해체하고 싶은 리스트 앞에 unpacking 연산자(*) 를 붙이면 된다. 

# zip
paris = list(zip(numbers, letters))

# unzip
numbers, letters = zip(*paris)

 

dictionary로 변환

keys = [1,2, 3]
values = ["A", "B", "C"]
# zip
dict(zip(keys, values))

#output
{1: 'A', 2: 'B', 3: 'C'}

 

주의 사항

zip 함수로 넘기는 인자의 길이가 서로 다를 때는 주의를 해야한다. 이럴 경우 가장 짧은 인자를 기준으로 데이터가 엮이고, 나머지는 버려지게 된다. 

 

Ref.

[파이썬] 내장 함수 zip 사용법 | Engineering Blog by Dale Seo

 

728x90
댓글
공지사항
최근에 올라온 글