A LINQ-like library for Python inspired by C# LINQ using itertools internally.
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
linq_tool-0.1.12.tar.gz
(9.2 kB
view hashes)
Built Distribution
Close
Hashes for linq_tool-0.1.12-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5184754d33d09f5a1d8907716dff8b69fc2ca67e1c12458cfa1379aa03ee2188 |
|
MD5 | 5f758407c04b1c7a1ccea09cbdac8d44 |
|
BLAKE2b-256 | 70b94bab7962fdf8fcb16c665f59ede7a0df01541c301ef8cdd8057939e4c4cd |