A Python library for efficient array operations using a fluent API.
Project description
arachnea
arachnea is a Python library that allows you to perform efficient array operations using a fluent API approach inspired by the agility and efficiency of spiders.
Features
- Map: Transform each element of an array using a provided function.
- Filter: Filter elements of an array based on a provided condition.
- Reduce: Reduce an array to a single value based on a provided accumulator and transformation function.
- Find: Find the first element in the array that meets the given condition.
- Remove: Remove the first element in the array that meets the given condition.
- ForEach: Execute a provided function once for each array element.
Installation
You can install arachnea via pip:
pip install arachnea
Usage
Basic Usage
from arachnea import arachnea
numbers = [1, 2, 3, 4, 5]
arachnea(numbers).for_each(lambda num: print(num * 2)) # Example of using forEach
API Examples
Mapping and Reducing
numbers = [1, 2, 3, 4, 5]
sum_of_squares = (
arachnea(numbers)
.map(lambda num: num * num)
.reduce(lambda acc, num: acc + num, 0)
)
print(sum_of_squares) # Output: 55
Filtering and Collecting
numbers = [1, 2, 3, 4, 5]
odd_numbers = (
arachnea(numbers)
.filter(lambda num: num % 2 != 0)
.collect()
)
print(odd_numbers) # Output: [1, 3, 5]
Removing Elements
numbers = [1, 2, 3, 4, 5]
remove_4 = (
arachnea(numbers)
.map(lambda num: num * num)
.remove(4)
.collect()
)
print(remove_4) # Output: [1, 9, 16, 25]
Finding Elements
numbers = [1, 2, 3, 4, 5]
greater_than_twenty_four = (
arachnea(numbers)
.map(lambda num: num * num)
.find(lambda num: num > 24)
)
print(greater_than_twenty_four) # Output: 25
Chaining Operations
numbers = [1, 2, 3, 4, 5]
result = (
arachnea(numbers)
.filter(lambda num: num > 2)
.map(lambda num: num * 3)
.reduce(lambda acc, num: acc + num, 0)
)
print(result) # Output: 39
API
map(transformer: (element: T) => K) -> Stream[K]
Transforms each element of the array using the provided transformer function.
filter(condition: (element: T) => bool) -> Stream[T]
Filters elements of the array based on the provided boolean condition function.
reduce(reducer: (accumulator: K, element: T) => K, initial_value: K) -> K
Reduces the array to a single value using the provided reducer function and initial value.
remove(condition: (element: T) => bool | T) -> Stream[T]
Removes the first element in the array that meets the given condition or is equal to the given parameter.
find(condition: (element: T) => bool | T) -> T
Finds the first element in the array that meets the given condition or is equal to the given parameter.
for_each(action: (element: T) => None) -> None
Executes a provided function once for each array element.
collect() -> List[T]
Collects the elements after applying all transformations and filters, returning them as a list.
Todo
- Combine successive filter operations into a single operation.
- Document
actionsLoop
for custom terminating operation injection. - Improve the performance of atomic operations.
- Add sorting, flattening functionality.
- Enhance performance optimizations.
- Implement error handling for edge cases.
Contributing
Contributions are welcome! Please fork the repository and submit a pull request.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file arachnea-0.0.5.tar.gz
.
File metadata
- Download URL: arachnea-0.0.5.tar.gz
- Upload date:
- Size: 5.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.8.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d27f23c713c810e458eaa919a4066bab475176b6ecf2b035fac3c59a74c8a655 |
|
MD5 | b10d709b2f3a01a6807e7f808144f5f2 |
|
BLAKE2b-256 | 96ca63ebf04386a653d1a9e76bf092d0d01255613f8b24e1d921c0e6303873be |
File details
Details for the file arachnea-0.0.5-py3-none-any.whl
.
File metadata
- Download URL: arachnea-0.0.5-py3-none-any.whl
- Upload date:
- Size: 5.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.8.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b7191613bbd108f74d0658f870bebdd8ff737289cd1af9fcbfac5756598893fe |
|
MD5 | f51e694c18fcd0c82d6bffd3e06cac2d |
|
BLAKE2b-256 | 0fddf4bf8c3df5d7ff267fb6e58585d2cc58fc3cdde8b441f6bb9ce9c04f953b |