-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyarray.py
More file actions
39 lines (30 loc) · 1.07 KB
/
pyarray.py
File metadata and controls
39 lines (30 loc) · 1.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import ctypes
class Array:
def __init__(self, n):
assert n > 0, 'Array size must be > 0'
self.size = n
self.elements = (ctypes.py_object * n)()
self.clear(None)
def __len__(self):
return self.size
def __getitem__(self, index):
assert index >= 0 and index < len(self), "Invalid index"
return self.elements[index]
def __setitem__(self, index, value):
assert index >= 0 and index < len(self), "Invalid index"
self.elements[index] = value
def insert(self, index, value):
for i in range(self.size - 1, index, -1):
self.elements[i] = self.elements[i-1]
self.elements[index] = value
def delete(self, index):
for i in range(index, self.size-1, 1):
self.elements[i] = self.elements[i + 1]
self.elements[self.size-1] = None
def traverse(self):
for i in range(len(self)):
print(self.elements[i], end=" ")
print()
def clear(self, value):
for i in range(len(self)):
self.elements[i] = value