들어가며
파이썬의 swapcase 메서드에 이어.. 알고리즘 문제를 풀다 얼떨결에 알게 된 zip 메서드, 이건 모두 알아야해!!!!!! 마음으로 포스팅해보려고 한다.
솔직히 이거 찾고 이굥진 인생 한정 2024 올해의 발견상 주고 싶었다.
예제
여기 같은 길이의 리스트 2개가 있다고 가정해보자. 이 리스트는 4명의 이름에 대한 리스트와, 그 이름에 맞는 점수 리스트다.
name = ["karina", "winter", "ningning", "zizel"]
score = [5, 10, 1, 3]
이 두 리스트를, 한 개의 딕셔너리로 매핑하려고 한다.
평소의 나는 for문으로 매핑하는 방법을 선택해서
이렇게 하거나,
혹은
이렇게 했을 것.
이런 약 3줄의 코드를 zip, dict 메서드를 쓰면 단 한 줄로 줄일 수 있다.
dict_score = dict(zip(name, score))
요 한 줄로 매핑이 가능하다. 아주 짧고 간단해짐.
for문 세 줄을 한 줄로 줄일 수 있게 해준 zip과 dict 함수에 대해 알아보자.
zip( )
zip()은 여러 개의 iterable(반복 가능한 객체, e.g. 리스트)을 병렬로 묶어서 튜플로 생성해주는 함수다.
즉, 위 예제에서는 두 리스트의 값을 하나씩 묶어서 튜플을 생성하는데,
zip(name, score) 코드가 name과 score 리스트의 값을 하나씩 묶어서 튜플로 만드는거라고 생각하면 된다.
결과는 아래와 같다.
[('may', 5), ('kein', 10), ('kain', 1), ('radi', 3)]
주의점 및 사용 예시
💡주의점
zip() 은 전달된 iterable 중 가장 짧은 길이에 맞춰 동작한다. 나머지 길이가 긴 요소는 무시된다.
사용 후 결과가 zip 객체로 반환되므로 필요 시 list()나 dict()로 변환해야 한다.
길이가 다른 리스트가 들어온다면?
list1 = [1, 2, 3]
list2 = ['a', 'b']
result = zip(list1, list2)
print(list(result)) # [(1, 'a'), (2, 'b')]
가장 짧은 길이에 맞춰서 동작한다. list1 에서의 마지막 요소인 3이 버려진 걸 볼 수 있다.
2개 이상의 여러 iterable도 한번에 묶을 수 있다!
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
list3 = [True, False, True]
result = zip(list1, list2, list3)
print(list(result)) # [(1, 'a', True), (2, 'b', False), (3, 'c', True)]
dict( )
dict 함수는 딕셔너리 객체를 생성하는데 사용되는 내장 함수이다.
zip() 을 통해 만든 아래의 튜플을,
[('may', 5), ('kein', 10), ('kain', 1), ('radi', 3)]
dict()에 전달하면, 첫 번째 리스트의 값이 key, 두 번째 리스트의 값이 value 인 딕셔너리를 만들어준다.
dict = dict(zip(name, score)) # 결과: {'karina': 5, 'winter': 10, 'ningning': 1, 'zizel': 3}
기타 사용 방법
이렇게도 쓸 수 있지롱
1. 빈 딕셔너리 생성
empty_dict = dict()
print(empty_dict) # {}
2. 키-값 쌍을 지정해서 생성
person = dict(name="Alice", age=25, city="Seoul")
print(person) # {'name': 'Alice', 'age': 25, 'city': 'Seoul'}
파이썬은 배우면 배울수록 엄청 쉽고 편한 함수들이 많은 걸 느낀다. 꾸준히 해야지
zip과 dict을 바로 써먹어보고 싶다면 아래 문제를 추천한당 lv.1 짜리라 가볍게 풀만함!https://school.programmers.co.kr/learn/courses/30/lessons/176963
'Programming Languages > Python' 카테고리의 다른 글
[Python] Python3와 PyPy3의 차이 (1) | 2024.12.19 |
---|---|
[Python] 파이썬에서의 집합, set 함수 (4) | 2024.08.12 |
[Python] 파이썬에서 최소 공배수 함수로 구하기 (0) | 2024.06.13 |
[Python] 리스트 append 와 extend의 차이 (2) | 2024.05.14 |
[Python] 알고리즘 문제 풀다 발견한 대소문자 바꾸기 메서드.. 우리의 시간을 아끼자 ^ㅡ^ (0) | 2024.05.13 |