Skip to main content

Merge, subtract, deduplicate and otherwise manipulate Python iterators that are known to be sorted.

Project description

Sorted containers

Contrary to its name, this package does not really help you to efficiently sort your data, - you may use built-in tools of Python, numpy or pandas for that purpose.

This tool, however, allows you to declare that certain container is already sorted and, based on that information, perform certain operations on such containers more efficiently.

Supported operations

  • Merge two or more sorted iterators into one magnificent sorted iterator
  • Subtract one sorted iterator from another, returning an iterator which yields all items that exist in the latter but not in the first
  • Deduplicate a sorted iterator

Examples

from itertools import count, islice
from sorted import Sorted, merge

# Merge
print(list(Sorted([0, 2, 4]) + Sorted([1, 3, 5])))
# [0, 1, 2, 3, 4, 5]

# Subtract
natural_numbers = Sorted(count())
even_numbers = Sorted(filter(lambda i: i % 2 == 0, count()))
odd_numbers = natural_numbers - even_numbers
print(list(islice(odd_numbers, 5)))
# [1, 3, 5, 7, 9]

# Deduplicate
iterators = [
    Sorted((0, ) * 50),
    Sorted((5, ) * 50),
    Sorted(count(25))
]
list(islice(
    merge(*iterators).unique(),
    4
))
# [0, 5, 25, 26]

To perform these operations, sorted uses lazy iterative algorithms with linear complexity by time and constant complexity by RAM.

Project details


Release history Release notifications

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for sorted, version 0.1.0
Filename, size File type Python version Upload date Hashes
Filename, size sorted-0.1.0-py3-none-any.whl (5.0 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size sorted-0.1.0.tar.gz (3.9 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page