본문 바로가기
데이터 분석/Python

파이썬) zip 함수 / 리스트 병렬로 묶어주기

by engwoon 2024. 12. 27.

목차

     

     

    `zip` 함수

    • 두개 이상의 iterable(리스트, 튜플, 문자열 등)을 병렬로 묶어주는 함수
    • 각 iterable의 같은 인덱스 위치에 있는 요소들을 쌍으로 묶어 튜플 형태로 반환한다.

     

    기본 동작

    a = [1, 2, 3]
    b = ['a', 'b', 'c']
    
    for x, y in zip(a, b):
        print(x, y)
    • 출력 결과:
      • 1,a / 2,b / 3,c
      • a, b 리스트 중 같은 인덱스 위치에 있는 요소가 쌍으로 반환된다.
      • (`a[0]` 과 `b[0]` 이 짝지어진다.)

     

    예제: 음양 더하기

    문제: 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs

    실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성하기

     

     

    정답

    def solution(absolutes, signs):
        answer = []
      
        for value, sign in zip(absolutes, signs):
          if sign:
            answer.append(value)
          else:
           answer.append(-value)
        return sum(answer)

     

     

    풀이

    • `zip(absolutes, signs)`
      • `absolutes`와 `signs` 리스트의 요소들을 같은 인덱스끼리 묶어서 반환한다.
    absolutes = [4, 7, 12]
    signs = [True, False, True]
    
    #zip 하면
    (4, True), (7, False), (12, True)

     

    • `for value, sign in zip(absolutes, signs):`
      • `zip`로 묶인 각 튜플을 순회
      • 각 반복에서 튜플의 첫번째 요소는 `value`, 두번째 요소는 `sign`에 대입된다.
    • 조건문 처리
      • `sign`의 변수가 `Boolean` 값임
    if sign: #sign이 True라면
    	answer.append(value) #answer[]에 value를 추가
    else:
    	answer.append(-value) #answer[]에 -value를 추가
    • `return sum(answer)`
      • -,+ 부호 달린 value 값이 answer[]에 추가됨
      • sum(answer)를 return