반응형
프로그래머스로 문제를 풀고 나서 다른 사람들의 풀이를 볼 때 흔히 zip()함수를 쓰는 것을 볼 수 있다.
늘 리스트나 문자열의 원소를 for문을 돌려서 자료를 하나씩 빼곤 했는데
여러 원소를 한 번에 빼내야 하는 경우 zip함수의 가독성이 더욱 높다고 판단했다!
1) 여러 변수의 객체를 인자로 받아 차례로 반환
* for문을 사용하는 경우
numbers = [1,2,3]
letters = ['A','B','C']
for i in range(3):
pair = (number[i],letters[i])
print(pair)
*zip 함수를 사용하는 경우
number = '12345'
upper = 'ABCDE'
lower = 'abcde'
for n,u,l in zip(number, upper, lower):
print(n,u,l)
그러면 순서대로
1 A a
2 B b.. 처럼 출력된다.
2) zip()함수로 엮어 놓은 데이터를 다시 해제하기
# zip()함수로 2개의 튜플을 엮은 후 리스트로 반환
numbers = (1,2,3)
letters = ('A','B','C')
pairs = list(zip(numbers,letters))
# 리스트 앞에 풀기 연산자를 붙여 다시 원래의 튜플로 나누기
numbers,letters = zip(*pairs)
3) 전치행렬 생성하기
a = [[1,2,3],[4,5,6],[7,8,9]]
b = list(zip(*a))
>> [(1,4,7),(2,5,8),(3,6,9)]
a 리스트의 각 요소인 리스트 들을 zip으로 묶어줄 수 있다. 이를 통해 transform 한 효과를 확인할 수 있다.
4) 딕셔너리 만들기
A = ['name','age','phone','gender']
B = ['CHAN',28,'010-xxxx-xxxx','male']
d = dict(zip(A,B))
>> {'name':'CHAN','age':28,'phone':'010-xxxx-xxxx','gender':'male'}
A 리스트의 값을 key로, B 리스트의 값을 value로 사용해서 딕셔너리를 생성한다. 즉 zip함수를 활용해 딕셔너리를 손쉽게 만들 수 있다.
반응형
'python > 코딩테스트' 카테고리의 다른 글
[python] 이진탐색 라이브러리 bisect (0) | 2022.08.19 |
---|---|
[python] 예외처리 / EOF / try,except (0) | 2022.07.18 |
[python] 재귀함수 파헤치기 (0) | 2022.07.08 |