[Python] 파이썬 리스트를 특정 크기의 리스트로 분할하기
- 자아실현/파이썬
- 2020. 10. 27.
리스트를 특정 크기의 리스트로 분할하기
아래의 예제에서는 크기가 9인 리스트를 4개씩 나누기 한 것 (n=4)
코드
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# How many elements each list should have
n = 4
# using list comprehension
result1 = [my_list[i * n:(i + 1) * n] for i in range((len(my_list) - 1 + n) // n )]
print (result1)
결과
List Comprehensin에 대한 설명
result1 = [my_list[i*n:(i+1)*n] for i in range((len(my_list) - 1 + n) // n )]
1) 먼저 몇 개의 리스트가 생기는지 구해야 한다.
9개를 4개씩 나누면 각각 "4개, 4개, 2개"가 들어가는 세 개의 리스트로 나누어진다.
이것은 ((9-1) // 4) +1과 같음. ( 9-1 한 것을 4로 나눈 몫에다 1을 더함)
(len(my_list)-1 // n) + 1 => (len(my_list) - 1 + n) // n )
len(my_list) - 1 + n) // n 이 3이므로
result1 = [my_list[i*n:(i+1)*n] for i in range(3)] 이 된다.
따라서 3개의 리스트가 들어있는 리스트가 결과물로 나오게 된다.
2) 1에서 구한 리스트 숫자로 리스트를 Slicing 한다
n=4이므로
result1 = [my_list[0:4],my_list[4:8],my_list[8:12]]가 되고,
마지막 my_list[8:12] 의 경우에는 my_list의 크기 이상을 인덱싱 하고 있지만 반환값이 없어 [9]가 된다.
따라서 결과는 다음과 같다
[[1, 2, 3, 4], [5, 6, 7, 8], [9]]
끝
후기
연필 들고 직접 해보는 건 건 쉬운데, 이걸 파이썬에서 List Comprehension으로 바꾸는 건 어려운 일이다.