파이썬에서 문자열을 한 행에 K개의 문자를 가진 행렬(matrix) 형태로 변환해야 하는 경우가 종종 있습니다. 이럴 때 리스트 컴프리헨션(list comprehension)과 리스트 슬라이싱(list slicing)을 활용한 함수를 정의하면 간단하게 결과를 얻을 수 있습니다.
동작 원리
핵심 아이디어는 다음과 같습니다.
- 문자열을 K 글자씩 잘라서(슬라이싱) 여러 개의 부분 문자열로 나눕니다.
- 나눠진 각 부분 문자열을 다시 개별 문자들의 리스트로 변환합니다.
- 이렇게 만들어진 리스트들을 하나의 리스트(행렬)로 묶어 반환합니다.
예제 코드
다음은 문자열을 행당 K개의 문자를 가진 행렬로 변환하는 전체 예제입니다.
def convert_to_matrix(my_string, my_key):
temp = [my_string[index: index + my_key] for index in range(0, len(my_string), my_key)]
my_result = [list(element) for element in temp]
print(my_result)
my_string = 'Python is fun'
print("The string is :")
print(my_string)
K = 7
print("The value of K is :")
print(K)
print("The result is :")
convert_to_matrix(my_string, K)출력 결과
The string is : Python is fun The value of K is : 7 The result is : [['P', 'y', 't', 'h', 'o', 'n', ' '], ['i', 's', ' ', 'f', 'u', 'n']]
코드 설명
convert_to_matrix라는 이름의 함수가 정의되며, 문자열과 키(K) 값을 매개변수로 받습니다.함수 내부에서는
range(0, len(my_string), my_key)를 통해 0부터 문자열 길이까지 K씩 건너뛰며 인덱스를 생성하고, 리스트 컴프리헨션과 슬라이싱(my_string[index: index + my_key])을 사용해 문자열을 K글자 단위로 분할합니다.분할된 각 부분 문자열은
list(element)를 통해 개별 문자들의 리스트로 변환되어 최종 결과 변수에 할당됩니다.함수 외부에서는 예시 문자열
'Python is fun'이 정의되고 콘솔에 출력됩니다.K 값으로 7이 지정되며, 역시 콘솔에 함께 표시됩니다.
마지막으로 문자열과 K 값을 인자로 전달하여 함수를 호출하면, 변환된 행렬이 콘솔에 출력됩니다.
결과 해석
위 예제에서 K가 7이므로 첫 번째 행에는 7개의 문자('P', 'y', 't', 'h', 'o', 'n', ' ')가 담기고, 남은 문자들('i', 's', ' ', 'f', 'u', 'n')은 두 번째 행에 담깁니다. 만약 문자열의 길이가 K로 나누어 떨어지지 않더라도, 마지막 행에는 남은 문자들만 포함되므로 별도의 예외 처리 없이 자연스럽게 동작한다는 점이 이 방법의 장점입니다.