파이썬에서 행렬(리스트의 리스트)을 세로 방향, 즉 열 단위로 연결해야 할 때는 리스트 컴프리헨션(list comprehension)과 itertools.zip_longest를 함께 사용하면 간단하게 처리할 수 있습니다.
아래는 실제 구현 예시입니다.
예제 코드
from itertools import zip_longest
my_list = [["Hi", "Rob"], ["how", "are"], ["you"]]
print("The list is : ")
print(my_list)
my_result = ["".join(elem) for elem in zip_longest(*my_list, fillvalue="")]
print("The list after concatenating the column is : ")
print(my_result)실행 결과
The list is : [['Hi', 'Rob'], ['how', 'are'], ['you']] The list after concatenating the column is : ['Hihowyou', 'Robare']
코드 설명
필요한 패키지인
itertools모듈의zip_longest함수를 임포트합니다.리스트 안에 여러 개의 리스트가 중첩된 형태의 데이터를 정의하고, 이를 콘솔에 출력합니다.
리스트 컴프리헨션을 사용하여
zip_longest(*my_list)로 각 행의 같은 위치에 있는 요소들을 묶습니다. 이때fillvalue=""옵션 덕분에 길이가 다른 리스트도 오류 없이 처리되며, 빈 문자열로 부족한 자리가 채워집니다.join()메서드로 묶인 요소들을 공백 없이 하나의 문자열로 합칩니다.연결된 최종 결과를 변수에 저장한 뒤, 콘솔에 출력합니다.
이 방식은 각 내부 리스트의 길이가 서로 달라도 zip_longest가 빈 값을 자동으로 채워주기 때문에, 일반적인 zip 함수보다 유연하게 행렬의 열을 세로로 연결할 수 있다는 장점이 있습니다.