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

파이썬으로 리스트를 행 크기가 점점 커지는 행렬로 변환하는 방법

리스트를 각 행의 크기가 특정 숫자만큼 점진적으로 증가하는 행렬(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]로 변경하면 됩니다. 상황에 맞게 슬라이싱 범위를 조절하여 다양한 형태의 행렬 변환이 가능합니다.