首页 > 解决方案 > Python中的动态数组中的字节大小不增加

问题描述

import ctypes
import sys

class DynamicArray(object):
    def __init__(self):
        self.n = 
        self.capacity = 1 
        self.A = self.make_array(self.capacity)

    def __len__(self):
        return self.n

    def __getitem__(self,k):
        if not 0 <= k <self.n:
            return IndexError('K is out of bounds!')

        return self.A[k] 

    def append(self, ele):
        if self.n == self.capacity:
            self._resize(2*self.capacity) 

        self.A[self.n] = ele 
        self.n += 1

    def _resize(self,new_cap):
        B = self.make_array(new_cap)

        for k in range(self.n):
            B[k] = self.A[k]

        self.A = B 
        self.capacity = new_cap 

    def make_array(self,new_cap):
        return (new_cap * ctypes.py_object)()

当我使用

arr = DynamicArray()

在插入大约 10 到 20 个数字后,字节大小保持不变。

这就是我检查数组大小的方式:

sys.getsizeof(arr)

字节大小显示为 56。

标签: pythonarraysdata-structuresdynamic-arrays

解决方案


推荐阅读