Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 – 문자열을 행당 K개의 문자가 있는 행렬로 변환하는 방법

파이썬에서 문자열을 한 행에 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로 나누어 떨어지지 않더라도, 마지막 행에는 남은 문자들만 포함되므로 별도의 예외 처리 없이 자연스럽게 동작한다는 점이 이 방법의 장점입니다.