파이썬에 list가 있는데 array.array는 왜 쓰는 건가요?
조회수 16853회
제가 파이썬을 배울 때는 "파이썬은 array대신 list를 쓴다"고 배웠습니다.
근데 인터넷에 보니까 배열을 만들 때 list말고도 array모듈에서 배열을 만들 수 있다고 나와있던데
둘은 어떤차이가 있는지 궁금합니다.
1 답변
-
python에 list는 크기가 가변적이고 어떤 원소 타입이던 저장할 수 있다는 장점이 있습니다. 대신 C의 array보다 메모리를 더 많이 필요로 한다는 단점이 있지요
array.array는 C의 array랑 같다고 보면 됩니다. 같은 타입에 원소만 저장할 수 있는 대신, 메모리를 훨씬 적게 씁니다.
맨 밑에 둘의 메모리 사용량을 비교해 놓았습니다.
그리고 묻지는 않으셨지만, array로 연산을 하는 경우는 array.array 보다는 NumPy를 쓰는 게 낫습니다(이쪽은 자동으로 vectorize)
list랑 array.array 메모리 사용량 비교
import array import resource startMem = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss mylist = [] for i in range(1,100000): mylist.append(i) listMem = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss myarray = array.array('i') for i in range(1,100000): myarray.append(i) arrayMem = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss print("list를 만드는 데는 :", listMem-startMem) print("array를 만드는 데는 : ", arrayMem-listMem)
실행 결과:
list를 만드는 데는 : 3768320 array를 만드는 데는 : 286720
(실행할 때 마다 조금씩 차이가 있지만 항상 list가 array보다 큽니다)
댓글 입력