src.pydasa.structs.lists.arlt#

Module to represent the ArrayList data structure in PyDASA. Fundamental for the rest of the Dimensional Analysis and Data Science Library.

classes:

ArrayList: Implements a dynamic array data structure with customizable comparison and key functions.

IMPORTANT: based on the implementations proposed by the following authors/books:

  1. Algorithms, 4th Edition, Robert Sedgewick and Kevin Wayne.

  2. Data Structure and Algorithms in Python, M.T. Goodrich, R. Tamassia, M.H. Goldwasser.

Classes#

ArrayList

ArrayList implements a dynamic array data structure for PyDASA.

Module Contents#

class src.pydasa.structs.lists.arlt.ArrayList#

Bases: Generic[pydasa.structs.types.generics.T]

ArrayList implements a dynamic array data structure for PyDASA.

Parameters:

Generic (T) – Generic type for a Python data structure.

Returns:

a generic data structure of type ArrayList or Dynamic Array with the following attributes:
  • cmp_function: Customizable comparison function for the elements in the ArrayList.

  • _elements: Native Python list that contains the elements of the structure.

  • key: Customizable key name for the elements in the ArrayList.

  • _size: Number of elements in the structure.

  • iodata: Customizable native Python list to initialize the structure.

Return type:

ArrayList

cmp_function: Callable[[pydasa.structs.types.generics.T, pydasa.structs.types.generics.T], int] | None = None#

Customizable comparison function for ArrayList elements. Defaults to dflt_cmp_function_lt() from PyDASA, but can be overridden by the user.

key: str | None = '_idx'#

Customizable key name for identifying elements in the ArrayList. Defaults to DFLT_DICT_KEY = ‘_id’ from PyDASA, but can be overridden by the user.

iodata: List[pydasa.structs.types.generics.T] | None = None#

Optional Python list for loading external data intho the ArrayList. Defaults to None but can be provided during creation.

__post_init__()#

__post_init__() Initializes the ArrayList after creation by setting attributes like cmp_function, key, and iodata.

NOTE: Special method called automatically after object creation.

Return type:

None

default_compare(elm1, elm2)#
default_compare() Default comparison function for ArrayList elements. Compares two elements and returns:
  • 0 if they are equal,

  • 1 if the first is greater,

  • -1 if the first is smaller.

Parameters:
  • elm1 (Any) – First element to compare.

  • elm2 (Any) – Second element to compare.

Returns:

Comparison result.

Return type:

int

property size: int#

size() Property to retrieve the number of elements in the ArrayList.

Returns:

number of elements in the ArrayList.

Return type:

int

property empty: bool#

empty() Property to check if the ArrayList is empty.

Returns:

True if the ArrayList is empty, False otherwise.

Return type:

bool

clear()#

clear() reset the ArrayList by removing all elements and resetting the size to 0.

NOTE: This method is used to empty the ArrayList without deleting the object itself.

Return type:

None

prepend(elm)#

prepend() adds an element to the beginning of the ArrayList.

Parameters:

elm (T) – element to be added to the beginning of the structure.

Return type:

None

append(elm)#

append() adds an element to the end of the ArrayList.

Parameters:

elm (T) – element to be added to the end of the structure.

Return type:

None

insert(elm, pos)#

insert() adds an element to a specific position in the ArrayList.

Parameters:
  • elm (T) – element to be added to the structure.

  • pos (int) – position where the element will be added.

Raises:
  • IndexError – error if the structure is empty.

  • IndexError – error if the position is invalid.

  • TypeError – error if the element type is invalid.

Return type:

None

property first: pydasa.structs.types.generics.T#

first Property to read the first element of the ArrayList.

Raises:

Exception – error if the structure is empty.

Returns:

the first element of the ArrayList.

Return type:

T

property last: pydasa.structs.types.generics.T#

last Property to read the last element of the ArrayList.

Raises:

Exception – error if the structure is empty.

Returns:

the last element of the ArrayList.

Return type:

T

get(pos)#

get() reads an element from a specific position in the ArrayList.

Parameters:

pos (int) – position of the element to be read.

Raises:
Returns:

the element at the specified position in the ArrayList.

Return type:

T

__getitem__(pos)#

__getitem__() reads an element from a specific position in the ArrayList. Equivelent to get() method.

NOTE: This method is used to access the elements of the ArrayList using the square brackets notation.

Parameters:

pos (int) – position of the element to be read.

Raises:
Returns:

the element at the specified position in the ArrayList.

Return type:

T

pop_first()#

pop_first() removes the first element from the ArrayList.

Raises:

IndexError – error if the structure is empty.

Returns:

the first element removed from the ArrayList.

Return type:

T

pop_last()#

pop_last() removes the last element from the ArrayList.

Raises:

IndexError – error if the structure is empty.

Returns:

the last element removed from the ArrayList.

Return type:

T

remove(pos)#

remove() removes an element from a specific position in the ArrayList.

Parameters:

pos (int) – position of the element to be removed.

Raises:
Returns:

the element removed from the ArrayList.

Return type:

T

compare(elem1, elem2)#

compare() compares two elements using the cmp_function defined in the ArrayList.

Parameters:
  • elem1 (T) – first element to compare.

  • elem2 (T) – second element to compare.

Raises:

TypeError – error if the cmp_function is not defined.

Returns:

-1 if elem1 < elem2, 0 if elem1 == elem2, 1 if elem1 > elem2.

Return type:

int

index_of(elm)#

index_of() searches for the first occurrence of an element in the ArrayList. If the element is found, it returns its index; otherwise, it returns -1.

Parameters:

elm (T) – element to search for in the ArrayList.

Returns:

index of the element in the ArrayList or -1 if not found.

Return type:

int

update(new_data, pos)#

update() updates an element in the ArrayList at a specific position.

Parameters:
  • new_data (T) – new data to be updated in the ArrayList.

  • pos (int) – position of the element to be updated.

Raises:
Return type:

None

swap(pos1, pos2)#

swap() swaps two elements in the ArrayList at specified positions.

Parameters:
  • pos1 (int) – position of the first element to swap.

  • pos2 (int) – position of the second element to swap.

Raises:
  • IndexError – error if the structure is empty.

  • IndexError – error if the first position is invalid.

  • IndexError – error if the second position is invalid.

Return type:

None

sublist(start, end)#

sublist() creates a new ArrayList containing a sublist of elements from the original ArrayList. The sublist is defined by the start and end indices.

NOTE: The start index is inclusive, and the end index is inclusive.

Parameters:
  • start (int) – start index of the sublist.

  • end (int) – end index of the sublist.

Raises:
  • IndexError – error if the structure is empty.

  • IndexError – error if the start or end index are invalid.

Returns:

a new ArrayList containing the sublist of elements.

Return type:

ArrayList[T]

concat(other)#

concat() concatenates two ArrayList objects. The elements of the second list are added to the end of the first list.

NOTE: The cmp_function and key attributes of the two lists must be the same.

Parameters:

other (ArrayList[T]) – the second ArrayList to be concatenated.

Raises:
  • TypeError – error if the other argument is not an ArrayList.

  • TypeError – error if the key attributes are not the same.

  • TypeError – error if the cmp_function are not the same.

Returns:

the concatenated ArrayList in the first list.

Return type:

ArrayList[T]

clone()#

clone() creates a new structure with the copy of the ArrayList. The new list is independent of the original list.

NOTE: we named the method clone() instead of copy() to avoid confusion with the native Python copy() method.

Returns:

a new ArrayList with the same elements as the original list.

Return type:

ArrayList[T]

__iter__()#

__iter__() to iterate over the elements of the ArrayList. This method returns an iterator object that can be used to iterate over the elements of the list.

NOTE: This is used to iterate over the elements of the list using a for loop.

Returns:

an iterator object that can be used to iterate over the elements of the list.

Return type:

Iterator[T]

__len__()#

__len__() to get the number of elements in the ArrayList. This method returns the size of the list.

Returns:

the number of elements in the ArrayList.

Return type:

int

__str__()#

__str__() get the string representation of the ArrayList. This method returns a string with the elements of the list.

Returns:

the string representation of the ArrayList.

Return type:

str

__repr__()#

__repr__() get the string representation of the ArrayList. This method returns a string representation.

Returns:

the string representation of the ArrayList.

Return type:

str