Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2020
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.28 KB | None | 0 0
  1. import ctypes # provides low-level arrays
  2. from array import array
  3.  
  4. class MyList:
  5. def __init__(self):
  6. self._n = 0 # count actual elements
  7. self._capacity = 1 # default array capacity
  8. self._A = self._make_array(self._capacity) # low-level array
  9.  
  10. def __len__(self):
  11. # Return number of elements stored in the array.
  12. return self._n
  13.  
  14. def __getitem__(self, k):
  15. # Return element at index k.
  16. if not 0 <= k < self._n:
  17. raise IndexError( "invalid index" )
  18. return self._A[k] # retrieve from array
  19.  
  20. def append(self, obj):
  21. #Add object to end of the array.
  22. if self._n == self._capacity: # not enough room
  23. self._resize(2*self._capacity) # so double capacity
  24. self._A[self._n] = obj
  25. self._n += 1
  26.  
  27. def _resize(self, c): # nonpublic utitity
  28. #Resize internal array to capacity c.
  29. B = self._make_array(c) # new (bigger) array
  30. for k in range(self._n): # for each existing value
  31. B[k] = self._A[k]
  32. self._A = B # use the bigger array
  33. self._capacity = c
  34.  
  35. def _make_array(self, c): # nonpublic utitity Return new array with capacity c.”””
  36. return (c*ctypes.py_object)( ) # see ctypes documentation
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement