Skip to main content

Add .map, .filter and .reduce as list methods

Project description

list_methods [Experimental]

Tired of not having map, filter and reduce easily available like in Javascript, Java, Kotlin, etc? Fear not, this is the package for you(sort of).

Experimental package adding .map(), .filter() and .reduce() as list methods. Made mostly as PoC showing how the Python language can be extended in some way.

Installation

PyPI version

pip install list_methods

Use

>>> from list_methods import L
>>> l = L([1,2,3])
>>> plus_one = lambda x : x+1
>>> greater_than_one = lamda x : x > 1
>>> l.map(plus_one).c()
L([2,3,4])
>>> l.filter(greater_than_one).c()
L([2,3])
>>> l.map(plus_one).map(plus_one).filter(greater_than_one).c()
L([3,4,5])
>>> agg_plus = lambda x,y: x+y
>>> l.reduce(agg_plus)
6

Gotchas

Remember to call the .c() method since this resets the object so it can be used further. This is not necessary when ending the chain of operations with .reduce()

Javascript

> l = [1,2,3]
> l.map(x => x +1)
[2,3,4]
> l.map(x => x +1)
[2,3,4]

list_methods - Python

>>> l.map(plus_one)
L([2,3,4])
>>> l.map(plus_one)
L([3,4,5])

Gotcha #2

  • The list needs to be copied when instantiating the object so it can be reset for other use. In the future one should maybe add a flag to skip this list copy if the list is only used in one place.

TODO

  • Write tests
  • Write benchmarks
  • Test a implementation where a new instance of the class is returned instead of self

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

list_methods-0.1.3.tar.gz (15.2 kB view details)

Uploaded Source

Built Distribution

list_methods-0.1.3-py3-none-any.whl (15.5 kB view details)

Uploaded Python 3

File details

Details for the file list_methods-0.1.3.tar.gz.

File metadata

  • Download URL: list_methods-0.1.3.tar.gz
  • Upload date:
  • Size: 15.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10

File hashes

Hashes for list_methods-0.1.3.tar.gz
Algorithm Hash digest
SHA256 dca2452b1a1114bc7da20e2681720a25fafd4c3622b848b216d1d7b9abf653cd
MD5 6345201aebca05378deb032e7036c144
BLAKE2b-256 7c1f2f6eb2022a2d95bbf99e2462c6a55eafda2c57144b3b82d563619ce5f920

See more details on using hashes here.

File details

Details for the file list_methods-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: list_methods-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 15.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10

File hashes

Hashes for list_methods-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a797bba84743f831f5b8f1be3cdb2bbf378cc79c7184bca4f6f83c6d526231c5
MD5 8c135b651d21d8353a0337fb7f4fcf8f
BLAKE2b-256 a9b49ecd5ef8f6b130850c5b303874fcde90d3b4eaaa57184c9bbcee775fda39

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page