[Python] zip() 함수와 아스테리스트(*)

someng·2022년 11월 16일
0

Python

목록 보기
7/11

zip() 함수
: 2개 이상의 시퀀스를 짧은 길이를 기준으로 일대일 대응하는 새로운 튜플 시퀀스 를 만드는 역할을 한다.

  • Python3+에서는 제너레이터를 리턴하기 때문에, 실젯값을 추출하기 위해서는 list()로 묶어주면 된다.
  • zip()의 결과 자체는 리스트 시퀀스가 아닌 튜플 시퀀스를 만들기 때문에, 값을 변경하는 게 불가능한 불변(immutable) 객체다.

<예시>

a = [1,2,3,4,5]
b = [2,3,4,5]
c = [3,4,5]

list(zip(a,b))		# [(1,2), (2,3), (3,4), (4,5)]
list(zip(a,b,c))	# [(1,2,3), (2,3,4), (3,4,5)]

아스테리스크(*)
: 시퀀스 언패킹 연산자(Sequence Unpacking Operator)
주로 튜플이나 리스트를 언패킹하는 데 사용한다.

<예시>

Q. 상위 k번 이상 등장하는 요소를 추출하라.

  • 입력
    nums = [1,1,1,2,2,3], k = 2
  • 출력
    [1,2]

A.

def topKFrequent(self, nums, k):
	return list(zip(*collections.Counter(nums).most_common(k)))[0] 
  • collections.Counter(nums).most_common(k)
    [(1,3), (2,2)]
  • 언패킹을 했을 때 ✅
    list(zip(*collections.Counter(nums).most_common(k)))
    → [(1,2), (3,2)]
  • 언패킹을 하지 않았을 때 ❎
    list(zip(collections.Counter(nums).most_common(k)))
    → [((1,3),), ((2,2),)]
profile
👩🏻‍💻 iOS Developer

0개의 댓글