파이썬에서 정수로 이루어진 행렬(2차원 리스트)을 문자열 행렬로 변환해야 하는 경우, 리스트 컴프리헨션(list comprehension)을 활용하면 매우 간단하게 처리할 수 있습니다. 별도의 함수를 만들거나 복잡한 반복문을 작성할 필요 없이 한 줄의 코드로 해결됩니다.
예제 코드
아래는 정수 행렬을 문자열 행렬로 변환하는 전체 예시입니다 −
my_list = [[14, 25, 17], [40, 28, 13], [59, 44, 66], [29, 33, 16]]
print("The list is :")
print(my_list)
my_result = [[str(element) for element in index] for index in my_list]
print("The result is :")
print(my_result)
실행 결과
The list is : [[14, 25, 17], [40, 28, 13], [59, 44, 66], [29, 33, 16]] The result is : [['14', '25', '17'], ['40', '28', '13'], ['59', '44', '66'], ['29', '33', '16']]
코드 설명
먼저 정수 값들로 구성된 2차원 리스트(행렬)를 정의한 뒤, 콘솔에 그대로 출력합니다.
my_result = [[str(element) for element in index] for index in my_list]부분이 핵심입니다. 바깥쪽 리스트 컴프리헨션이 행렬의 각 행(row)을 순회하고, 안쪽 컴프리헨션이 해당 행의 각 요소를 순회하면서str()함수로 문자열로 변환합니다.변환된 새로운 문자열 행렬은 변수
my_result에 저장되며, 원본 리스트my_list는 변경되지 않습니다.마지막으로 변환된 결과를 콘솔에 출력하면, 모든 정수가 따옴표로 묶인 문자열 형태로 표시되는 것을 확인할 수 있습니다.
참고: 대안적인 방법
같은 작업은 map() 함수를 조합해서도 수행할 수 있습니다. 아래와 같이 작성하면 내부 반복을 더 간결하게 표현할 수 있습니다.
my_result = [list(map(str, row)) for row in my_list]
두 방법 모두 결과는 동일하지만, 리스트 컴프리헨션은 중첩된 for 반복문을 직접 작성하는 것보다 코드가 짧고 가독성이 뛰어나며 파이썬다운 관용적인 표현으로 널리 권장됩니다.