리스트를 각 행의 크기가 특정 숫자만큼 점진적으로 증가하는 행렬(matrix)로 변환해야 하는 경우, '//' 연산자(정수 나눗셈)와 간단한 반복문을 활용하면 손쉽게 구현할 수 있습니다.
여기서 '//' 연산자는 나눗셈 결과에서 소수점 이하를 버린 정수값을 반환하므로, 전체 요소 개수를 기준으로 몇 개의 행을 만들 수 있는지 계산하는 데 유용하게 사용됩니다.
예제 코드
아래 예제를 통해 실제 동작 방식을 확인해 보겠습니다.
my_list = [42, 45, 67, 89, 99, 10, 23, 12, 31, 43, 60, 1, 0]
print("The list is :")
print(my_list)
my_key = 3
print("The value of key is ")
print(my_key)
my_result = []
for index in range(0, len(my_list) // my_key):
my_result.append(my_list[0: (index + 1) * my_key])
print("The resultant matrix is :")
print(my_result)출력 결과
The list is : [42, 45, 67, 89, 99, 10, 23, 12, 31, 43, 60, 1, 0] The value of key is 3 The resultant matrix is : [[42, 45, 67], [42, 45, 67, 89, 99, 10], [42, 45, 67, 89, 99, 10, 23, 12, 31], [42, 45, 67, 89, 99, 10, 23, 12, 31, 43, 60, 1]]
코드 설명
먼저 하나의 리스트를 정의하고, 콘솔에 출력하여 확인합니다.
행 크기의 증가 단위가 될 키(key) 값을 정의하고 콘솔에 표시합니다.
변환 결과를 저장할 빈 리스트를 생성합니다.
'//' 연산자를 사용해 전체 요소 개수를 키 값으로 나눈 몫만큼 반복을 진행합니다. 각 반복마다 리스트의 첫 번째 요소부터 (인덱스 + 1) × 키 위치까지의 요소를 슬라이싱합니다.
슬라이싱한 부분 리스트를 append() 메서드로 빈 리스트에 추가합니다. 이렇게 하면 각 행의 크기가 키 값씩 점점 커지는 구조가 만들어집니다.
마지막으로 완성된 행렬을 콘솔에 출력합니다.
참고 사항
위 방식은 각 행이 항상 리스트의 첫 번째 요소부터 시작한다는 특징이 있습니다. 만약 행들이 서로 겹치지 않고 순차적으로 분할되기를 원한다면, 슬라이싱 범위를 [index * my_key : (index + 1) * my_key]로 변경하면 됩니다. 상황에 맞게 슬라이싱 범위를 조절하여 다양한 형태의 행렬 변환이 가능합니다.