본문 바로가기
Pythonic

[파이썬을 파이썬답게] 2차원 리스트 뒤집기

by YGSEO 2021. 3. 8.
728x90
def solution(mylist):
    answer = [list(x) for x in zip(*mylist)]
    return answer

for x 2

mylist = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
new_list = [[], [], []]

for i in range(len(mylist)):
    for j in range(len(mylist[i])):
        new_list[i].append(mylist[j][i])

pythonic

mylist = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
new_list = list(map(list, zip(*mylist)))

 

ZIP

zip으로 dict의 key, value를 넣어줄 수 도 있다.

 

https://wikidocs.net/32#zip

wikidocs.net/32#zip

 

 

 

1. * 연산자
별 연산자(star operator)는 곱하기를 나타날 때 쓰기도 하지만, 함수 인자에 대해서는 다른 역할을 수행한다. 리스트 또는 튜플에 있는 원소들을 차례대로 꺼내어 함수 인자에 대응시킨다.

2. zip과 *의 조합
만약 A가 이중 리스트인 경우, *를 사용하면 리스트가 반환될 것이다. 단 리스트를 통째로 반환하지 않고, 각 리스트의 원소들을 차례대로 반환한다. 

다만 return이 tuple이기 때문에 list를 원하면 list로.

3. 주의사항
위 방법에는 치명적인 주의사항이 있다. 이중 리스트이지만 행렬이라고 보기 어려운 경우(즉, 리스트 안의 리스트들이 서로 다른 크기를 갖는 경우)

가장 작은 리스트를 기준으로 전치된 결과가 에러없이 나오므로 주의한다.

 

 

출처:

m.blog.naver.com/PostView.nhn?blogId=cjh226&logNo=221328286730&proxyReferer=https:%2F%2Fwww.google.com%2F

 

파이썬 리스트 전치(transpose)

Numpy를 사용하지 않고, 파이썬의 기본 문법으로 2중 리스트(list 또는 matrix)를 전치(transpose)하는 방...

blog.naver.com

 

 

 

 

728x90

댓글