Listo is an enhanced version of the list type that aims to do the following:
- Make behavior more consistent. No more methods with "in-place" changes. Every method call returns a value
- Adds methods that are missing from the
listtype. For example,listohas afirstmethod that returnsself[0] - A list of arguments passed in will be converted to a
listoobject, but a single argument that is an iterator will be unpacked into alistoobject. This is useful for when you want to pass in a generator or other iterator into a function that expects a list
First install it via pip, poetry, or whatever you use
pip install listoThen use it in your code
from listo import listo
lst = listo(1, 2, 3)
assert lst.first() == 1
assert lst.last() == 2For arguments passed in, it just converts them to a listo object
lst = listo(1, 2, 3)
assert lst == [1, 2, 3]
lst2 = listo([1, 2, 3]) # list is unpacked
assert lst2 == [1, 2, 3]
lst3 = listo((1, 2, 3)) # tuple is converted and unpacked
assert lst3 == [1, 2, 3]
lst4 = listo([1, 2, 3], (1, 2)) # Two args mean nothing is unpacked
assert lst4 == [[1, 2, 3], (1, 2)]This is different from standard Python iterator behavior.
Have you tried using Listo and found it useful? Do you have ideas for how to make it better?
We welcome contributions from the community!
See CONTRIBUTING.md for details on how to set up your development environment to contribute to this project, run tests, check code quality, release new versions, and more.