파이썬에서 행렬 형태의 2차원 리스트를 하나의 문자열로 변환해야 하는 경우가 종종 있습니다. 이럴 때 리스트 컴프리헨션(list comprehension)과 join 메서드를 함께 사용하면 간결하고 효율적으로 처리할 수 있습니다.
예제 코드
아래 예제는 2차원 리스트를 지정한 구분자를 사용해 하나의 문자열로 변환하는 과정을 보여줍니다.
my_list = [[1, 23, "python"], [1, "is", 24], ["fun", 97, 5]]
print("The list is :")
print(my_list)
in_delete, out_delete = ",", " "
my_result = out_delete.join([in_delete.join([str(element) for element in sub]) for sub in my_list])
print("The output string is :")
print(my_result)실행 결과
The list is : [[1, 23, 'python'], [1, 'is', 24], ['fun', 97, 5]] The output string is : 1,23,python 1,is,24 fun,97,5
코드 설명
먼저 리스트 안에 리스트가 중첩된 2차원 리스트를 정의하고, 콘솔에 출력하여 원본 데이터를 확인합니다.
두 개의 변수에 구분자 기호를 저장합니다. 여기서는 내부 구분자로 쉼표(
,), 외부 구분자로 공백()을 사용했습니다.리스트 컴프리헨션을 통해 외부 리스트의 각 하위 리스트를 순회하며, 내부 컴프리헨션은 다시 각 하위 리스트의 요소들을 순회합니다.
각 요소는
str()함수로 문자열로 변환됩니다. join 메서드는 문자열끼리만 연결할 수 있기 때문에 정수 등 다른 자료형은 반드시 문자열로 변환해야 합니다.내부 join은 각 행의 요소들을 쉼표로 연결하고, 외부 join은 그 결과 행들을 공백으로 연결하여 최종 문자열을 만듭니다.
완성된 결과 문자열은 변수에 저장된 후 콘솔에 출력됩니다.
핵심 포인트
이 기법의 핵심은 이중 리스트 컴프리헨션과 중첩된 join 호출입니다. 바깥쪽 join이 행과 행 사이를 연결하고, 안쪽 join이 한 행 내부의 요소들을 연결하는 구조입니다. 구분자만 바꾸면 탭(\t), 줄바꿈(\n) 등 원하는 형식으로 손쉽게 응용할 수 있어, CSV 형식 변환이나 로그 출력 등 다양한 상황에서 유용하게 활용됩니다.