a simple, generically type-annotated, sorted list
Project description
srtlst
a simple, generically type-annotated, sorted list
usage
Create a sorted list like this:
>>> from srtlst import SortedList
>>> s = SortedList([5, 3, 1])
>>> print(s)
[1, 3, 5]
A SortedList mimics a regular list in most ways, but remains sorted:
>>> s = SortedList([5, 3, 1])
>>> s.extend([6, 2, 4])
>>> print(s)
[1, 2, 3, 4, 5, 6]
You can use add() instead of insert() or append():
>>> s = SortedList([5, 3, 1])
>>> s.add(3)
>>> s.add(2)
>>> print(s)
[1, 2, 3, 3, 5]
If you need your data to be sorted in descending order use the optional reverse parameter:
>>> s = SortedList([1, 2, 3], reverse=True)
>>> s.add(4)
>>> print(s)
[4, 3, 2, 1]
If your data is not inherently sortable, or you want to sort it in a non-default way, you can use SortedListByKey
and supply a function to sort it (just like with sorted()):
>>> from srtlst import SortedListByKey
>>> my_function = lambda x: x * (-1) ** x
>>> s = SortedListByKey([1, 2, 3, 4], key=my_function)
>>> print(s)
[3, 1, 2, 4]
SortedListByKey behaves like a SortedList in all other ways, and indeed inherits from it.
However, when type checking, a SortedList only accepts values for which a less-than (<) method is defined (__lt__()).
SortedListByKey accepts any type of object, as long as an appropriate key function is provided.
The key function must return comparable values for the items in the list.
installation
No surprises here:
$ pip install srtlst
type checking
SortedList and SortedListByKey are type-hinted according to PEP 484
and the srtlst library is itself checked using mypy --strict.
Type hints for both containers can be provided using type arguments, just like with list and other containers:
s: SortedList[int] = SortedList([3, 2, 1])
performance
This library aims to provide a simple sorted list without any dependencies which is ready for use.
Some of the list operations are reimplemented to take advantage of the list's sortedness using Python's standard bisect library.
This library should suit your needs if you just want to keep stuff sorted, without having to implement the bookkeeping yourself. However, if your sorting needs arise from the need for performance, you should also consider this library: sortedcontainers.
documentation
Documentation is work in progress. For now the Python's built-in help function can be of service:
>>> from srtlst import SortedList
>>> help(SortedList)
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file srtlst-0.2.0.tar.gz.
File metadata
- Download URL: srtlst-0.2.0.tar.gz
- Upload date:
- Size: 6.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.2 CPython/3.11.2 Darwin/22.4.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
afe71c1b2f667f17d66f303ffc3e0560226615250c8a99e822f565e8bcb3b005
|
|
| MD5 |
bb3821d53024829b7f21ab5dde343aa0
|
|
| BLAKE2b-256 |
f29bcd7a7627a004cbd2a3b7e32478cf32dda6780bf0f54429802465d9367e39
|
File details
Details for the file srtlst-0.2.0-py3-none-any.whl.
File metadata
- Download URL: srtlst-0.2.0-py3-none-any.whl
- Upload date:
- Size: 7.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.2 CPython/3.11.2 Darwin/22.4.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3bfa2a80b3e824708d194ad15452c2ee7e149207dd9246f5f56adbba16d77165
|
|
| MD5 |
c7a7c9ffb7ebb54f10e695a45a98cda5
|
|
| BLAKE2b-256 |
b875c6fb4fba649020c3f11600e82ff0867c2d87f2222b665cba1312257f48bd
|