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

조회수 13671회

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

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

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

1 답변

  • 좋아요

    2

    싫어요
    채택 취소하기

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

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.