파이썬에 list가 있는데 array.array는 왜 쓰는 건가요?


제가 파이썬을 배울 때는 "파이썬은 array대신 list를 쓴다"고 배웠습니다.

근데 인터넷에 보니까 배열을 만들 때 list말고도 array모듈에서 배열을 만들 수 있다고 나와있던데

둘은 어떤차이가 있는지 궁금합니다.

  • 2016년 02월 12일에 작성됨

조회수 501


1 답변


좋아요
0
싫어요
채택취소하기

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보다 큽니다)

  • 2016년 02월 12일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close