[파이썬] List 원하는 길이만큼 나누기 원하는 덩어리로 나누기 (python : divide list in N parts)
안녕하세요 종백이입니다😎
최근 사용하는 API 가 느려서 어떻게 하면 빠르게 할 수 있을까 생각을 하고 있는 도중 전송 데이터를 list 형태로 줘도 작동하는 것을 알아서 list 최대 길이만큼 전송을 해주려고 합니다.
전송할 수 있는 list의 최대 길이는 1000 개였고 1000개 단위로 list를 분할하는 것 그리고 추가로 N 개 덩어리로 list를 분할하는 법에 대해서도 알아보겠습니다.
사용되는 모듈은 numpy에 있는 array_split()입니다.
import numpy as np
totalList = [1,2,3,4,5,6,7,8,9,10]
n = 2
if len(totalList)%n == 0:
divideNum = int(len(totalList)/n)
else :
divideNum = int(len(totalList)/n)+1
divided = np.array_split(totalList,divideNum)
위 코드는 10개의 리스트를 2개 단위로 나누는 것입니다. array_split 속 인자는 분해할 리스트, 분해할 덩어리 수 가 들어가야 합니다. 몇 덩이로 분해할 수 있는지만 나와있습니다.
분해할 리스트와 분해하고 싶은 길이를 나눠서 정수로 딱 떨어지면 그 값 그대로 사용하시면 되고 그게 아니면 int는 내림 효과가 있기 때문에 1을 더해주셔야 합니다.
위 코드를 돌려보면 결괏값이 다음과 같이 나옵니다.
numpy의 arry상태 이므로 [x.tolist() for x in divided]를 하면 list 형태로 얻을 수 있습니다.
만약 2403 길이의 list를 1000개씩 나누면 3덩어리가 나오겠죠?!
import numpy as np
totalList = range(1,2403)
n = 1000
if len(totalList)%n == 0:
divideNum = int(len(totalList)/n)
else :
divideNum = int(len(totalList)/n)+1
divided = np.array_split(totalList,divideNum)
이런 방식으로 list를 원하는 길이로 나눌 수 있습니다!
혹시 numpy 모듈을 사용하기 싫으신 분들은 range를 통해 divideNum만큼 list를 만들고 for 문을 통해 슬라이싱 하시면 됩니다 ㅎㅎ 혹시 이 방법을 구체적으로 알고 싶으신 분들은 댓글 부탁드립니다!
글 내용이 도움되셨다면 구독 또는 좋아요 부탁드립니다~
더 많은 정보와 리뷰를 원하시면 여기로!
모바일은 여기로!