티스토리 뷰

반응형

Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.

Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.

 

아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.

Transpose/Unzip Function (inverse of zip)?

바꾸다 / 압축풀기(zip의 역함수) 함수?

 문제 내용 

I have a list of 2-item tuples and I'd like to convert them to 2 lists where the first contains the first item in each tuple and the second list holds the second item.

저는 2개의 항목을 가진 튜플 리스트가 있고, 이를 각각 첫 번째 항목과 두 번째 항목을 갖는 2개의 리스트로 변환하고 싶습니다.

 

For example:

예를 들어:
original = [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
# and I want to become...
result = (['a', 'b', 'c', 'd'], [1, 2, 3, 4])

 

Is there a builtin function that does that?

이를 수행하는 내장 함수가 있나요?

 

 

 

 높은 점수를 받은 Solution 

In 2.x, zip is its own inverse! Provided you use the special * operator.

2.x 버전에서는, zip 함수가 그 자체로 반대 동작을 합니다! 특별한  * 연산자를 사용하는 경우 말이죠.
>>> zip(*[('a', 1), ('b', 2), ('c', 3), ('d', 4)])
[('a', 'b', 'c', 'd'), (1, 2, 3, 4)]

 

This is equivalent to calling zip with each element of the list as a separate argument:

이는 리스트의 각 요소를 개별 인수로 사용하여 zip을 호출하는 것과 동일합니다.
zip(('a', 1), ('b', 2), ('c', 3), ('d', 4))

 

except the arguments are passed to zip directly (after being converted to a tuple), so there's no need to worry about the number of arguments getting too big.

각 요소를 개별 인수로 zip에 전달하는 것과 동일한 기능을 합니다. 다만, zip으로 전달하기 전에 각 요소가 튜플로 변환되고 바로 zip으로 전달되기 때문에 인수의 수가 너무 많아지는 것을 걱정할 필요가 없습니다.

 

In 3.x, zip returns a lazy iterator, but this is trivially converted:

Python 3.x에서는 zip이 lazy iterator를 반환하지만, 이를 쉽게 변환할 수 있습니다.
>>> list(zip(*[('a', 1), ('b', 2), ('c', 3), ('d', 4)]))
[('a', 'b', 'c', 'd'), (1, 2, 3, 4)]

 

 

 가장 최근 달린 Solution 

Consider using more_itertools.unzip:

more_itertools.unzip를 사용하는 것을 고려해보세요.

 

>>> from more_itertools import unzip
>>> original = [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
>>> [list(x) for x in unzip(original)]
[['a', 'b', 'c', 'd'], [1, 2, 3, 4]]     

 

 

출처 : https://stackoverflow.com/questions/19339/transpose-unzip-function-inverse-of-zip

반응형
댓글
공지사항
최근에 올라온 글