Transpose 란
Transpose는 행렬이나 2차원 리스트에서 행(row)과 열(column)을 서로 맞바꾸는 작업을 의미합니다.
예를 들어, 𝑛 × 𝑚 행렬에서 전치된 행렬은 𝑚 × 𝑛 크기를 가지며,
원래 행렬의 행이 열이 되고, 열이 행이 됩니다.
Transpose 구현
Python에서 전치를 구현하는 일반적인 방법 중 하나는 zip 함수와 * 연산자를 사용하는 것입니다.
zip(*iterables)의 동작
- zip 함수는 여러 iterable(리스트, 튜플 등)의 요소를 묶어서 튜플을 생성하는 함수입니다.
- '*' 연산자를 통해 iterable의 각 요소를 개별 인자로 풀어서 함수에 전달합니다.
Transpose 예시
# 예시 2차원 리스트 (grid)
grid = [
['a', 'b', 'c'],
['d', 'e', 'f'],
['g', 'h', 'i']
]
# grid의 전치
transposed_grid = list(zip(*grid))
# [('a', 'd', 'g'), ('b', 'e', 'h'), ('c', 'f', 'i')]
# 결과 출력
for row in transposed_grid:
print(row)
# 출력
('a', 'd', 'g')
('b', 'e', 'h')
('c', 'f', 'i')
예를 들어, *grid는 ['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']로 전달됩니다.
zip(*grid): zip 함수는 각 인자로 받은 리스트의 동일한 인덱스에 있는 요소들을 묶어서 튜플을 만듭니다.
이 과정에서:
첫 번째 튜플은 각 리스트의 첫 번째 요소를 묶어 ('a', 'd', 'g')가 됩니다.
두 번째 튜플은 각 리스트의 두 번째 요소를 묶어 ('b', 'e', 'h')가 됩니다.
세 번째 튜플은 각 리스트의 세 번째 요소를 묶어 ('c', 'f', 'i')가 됩니다.
결국, zip(*grid)는 원래의 행렬을 전치한 결과를 반환합니다.
'Programming > Python' 카테고리의 다른 글
Python - Pandas 기본 (0) | 2024.09.18 |
---|---|
Python - AWS Athena 쿼리실행방법 PyAthena vs Boto3 (0) | 2024.09.03 |
Python - zip 활용 (0) | 2024.08.19 |
Python - Product vs Permutations vs Combinations (0) | 2024.08.18 |
Python - Numpy란 [1] (0) | 2023.11.18 |