A LINQ-like library for Python inspired by C# LINQ using itertools and more-itertools internally.
This project has been archived.
The maintainers of this project have marked this project as archived. No new releases are expected.
Project description
Linq Tool
Linq is a Python package that provides LINQ-like functionality for performing common operations on iterables. Inspired by LINQ from C#, this package allows you to easily manipulate collections in a functional style.
Features
- Select: Project each element of a sequence into a new form.
- Where: Filter elements based on a predicate.
- GroupBy: Group elements by a key selector function.
- OrderBy: Sort elements based on a key.
- Distinct: Remove duplicate elements.
- And many more!
Installation
You can install Linq via pip:
pip install linq-tool
Usage Examples
You might create a Linq instance and iterate throughout the object
linq = Linq([1, 2, 3])
for item in linq:
print(item) # 1
The object is an iterable, if you need to use it as list, you need to invoke the to_list method
Select
from linq_tool import Linq
linq = Linq([1, 2, 3])
result = linq.select(lambda x: x * 2).to_list()
print(result) # Output: [2, 4, 6]
Where
linq = Linq([1, 2, 3, 4])
result = linq.where(lambda x: x % 2 == 0).to_list()
print(result) # Output: [2, 4]
GroupBy
linq = Linq(['apple', 'banana', 'apricot', 'blueberry'])
result = linq.group_by(lambda x: x[0]).to_list()
print(result) # Output: [('a', ['apple', 'apricot']), ('b', ['banana', 'blueberry'])]
OrderBy
linq = Linq([{'name': 'apple', 'price': 5}, {'name': 'banana', 'price': 3}])
result = linq.order_by(lambda x: x['price']).to_list()
print(result) # Output: [{'name': 'banana', 'price': 3}, {'name': 'apple', 'price': 5}]
Distinct
linq = Linq([1, 2, 2, 3, 4, 4])
result = linq.distinct().to_list()
print(result) # Output: [1, 2, 3, 4]
Take
linq = Linq([1, 2, 2, 3, 4, 4])
result = linq.distinct().to_list()
print(result) # Output: [1, 2, 3, 4]
Skip
linq = Linq([1, 2, 3, 4, 5])
result = linq.skip(2).to_list()
print(result) # Output: [3, 4, 5]
FirstOrDefault
linq = Linq([1, 2, 3])
result = linq.first_or_default()
print(result) # Output: 1
empty_linq = Linq([])
result = empty_linq.first_or_default(42)
print(result) # Output: 42
LastOrDefault
linq = Linq([1, 2, 3])
result = linq.last_or_default()
print(result) # Output: 3
empty_linq = Linq([])
result = empty_linq.last_or_default(42)
print(result) # Output: 42
Any
linq = Linq([1, 2, 3])
result = linq.any(lambda x: x > 2)
print(result) # Output: True
result = linq.any(lambda x: x > 3)
print(result) # Output: False
All
linq = Linq([1, 2, 3])
result = linq.all(lambda x: x > 0)
print(result) # Output: True
result = linq.all(lambda x: x > 1)
print(result) # Output: False
Count
linq = Linq([1, 2, 3, 4])
result = linq.count()
print(result) # Output: 4
TakeWhile
linq = Linq([1, 2, 3, 4, 5])
result = linq.take_while(lambda x: x < 4).to_list()
print(result) # Output: [1, 2, 3]
SkipWhile
linq = Linq([1, 2, 3, 4, 5])
result = linq.skip_while(lambda x: x < 4).to_list()
print(result) # Output: [4, 5]
SkipWhile
linq = Linq([1, 2, 3, 4, 5])
result = linq.skip_while(lambda x: x < 4).to_list()
print(result) # Output: [4, 5]
ZipWith
linq = Linq([1, 2, 3])
result = linq.zip_with(['a', 'b', 'c']).to_list()
print(result) # Output: [(1, 'a'), (2, 'b'), (3, 'c')]
ZipLongest
linq = Linq([1, 2, 3])
result = linq.zip_longest_with(['a', 'b'], fillvalue='x').to_list()
print(result) # Output: [(1, 'a'), (2, 'b'), (3, 'x')]
Batch
linq = Linq([1, 2, 3, 4, 5, 6])
result = linq.batch(2).to_list()
print(result) # [(1, 2), (3, 4), (5, 6)]
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
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 linq_tool-0.1.14.tar.gz.
File metadata
- Download URL: linq_tool-0.1.14.tar.gz
- Upload date:
- Size: 9.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc48d16929f2ea06a9b7116b974cdc410364f2cd71256bfa0052f2ff35a1e2c1
|
|
| MD5 |
f81eaf64ae57524a96bb1948361b9e72
|
|
| BLAKE2b-256 |
38fcca4399f572c4e515b9aab819ecde0ee126a6fb8895d49cef01f7046fce33
|
File details
Details for the file linq_tool-0.1.14-py3-none-any.whl.
File metadata
- Download URL: linq_tool-0.1.14-py3-none-any.whl
- Upload date:
- Size: 8.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
37ac0ac81a0337a7751633ba7396db4f32f8fa16f873cf13aa14e5321498cb90
|
|
| MD5 |
981b7d6b8a36bfb1d56f8d5c0efd260a
|
|
| BLAKE2b-256 |
498820e38c368d1bfe78bd49b1c09c4ab33cebf693e867486a88f1fc0de2fb96
|