본문 바로가기
데이터 분석/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)
    • absolutessigns 리스트의 요소들을 같은 인덱스끼리 묶어서 반환한다.
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