티스토리 뷰

반응형

안녕하세요 종백이입니다😎

 

최근 사용하는 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 array
numpy array 결과값

numpy의 arry상태 이므로 [x.tolist() for x in divided]를 하면 list 형태로 얻을 수 있습니다.

numpy array to list
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 문을 통해 슬라이싱 하시면 됩니다 ㅎㅎ 혹시 이 방법을 구체적으로 알고 싶으신 분들은 댓글 부탁드립니다!

 

글 내용이 도움되셨다면 구독 또는 좋아요 부탁드립니다~

더 많은 정보와 리뷰를 원하시면 여기로!

모바일은 여기로!

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함