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를 넣어줄 수 도 있다.
1. * 연산자
별 연산자(star operator)는 곱하기를 나타날 때 쓰기도 하지만, 함수 인자에 대해서는 다른 역할을 수행한다. 리스트 또는 튜플에 있는 원소들을 차례대로 꺼내어 함수 인자에 대응시킨다.
2. zip과 *의 조합
만약 A가 이중 리스트인 경우, *를 사용하면 리스트가 반환될 것이다. 단 리스트를 통째로 반환하지 않고, 각 리스트의 원소들을 차례대로 반환한다.
다만 return이 tuple이기 때문에 list를 원하면 list로.
3. 주의사항
위 방법에는 치명적인 주의사항이 있다. 이중 리스트이지만 행렬이라고 보기 어려운 경우(즉, 리스트 안의 리스트들이 서로 다른 크기를 갖는 경우)
가장 작은 리스트를 기준으로 전치된 결과가 에러없이 나오므로 주의한다.
출처:
파이썬 리스트 전치(transpose)
Numpy를 사용하지 않고, 파이썬의 기본 문법으로 2중 리스트(list 또는 matrix)를 전치(transpose)하는 방...
blog.naver.com
728x90
'Pythonic' 카테고리의 다른 글
[파이썬을 파이썬답게] map 함수 응용하기 (0) | 2021.03.08 |
---|---|
[파이썬을 파이썬답게] i번째 원소와 i+1번째 원소 (0) | 2021.03.08 |
[파이썬을 파이썬답게] 알파벳 출력하기 (0) | 2021.03.08 |
[파이썬을 파이썬답게] 문자열 정렬하기 (0) | 2021.03.08 |
[파이썬을 파이썬답게] n진법으로 표기된 string을 10진법 숫자로 변환하기 (0) | 2021.03.08 |
댓글