arr = [1, 2, 3, 4, 5]
a = list(map(lambda x: x * 2, filter(lambda x: x % 2 == 0, arr)))
print(a)


# pip install pipe
from pipe import select, where

a = list(arr | where(lambda x: x % 2 == 0) | select(lambda x: x * 2))

print(a)


a = list(arr | where(lambda x: x % 2 == 0))
print(a)


a = list(arr | select(lambda x: x * 2))
print(a)


from pipe import chain

nested = [[1, 2, [3]], [4, 5]]
a = list(nested | chain)
print(a)


from pipe import traverse

nested = [[1, 2, [3]], [4, 5]]
a = list(nested | traverse)
print(a)


from pipe import traverse, select

fruits = [
    {"name": "apple", "price": [2, 5]},
    {"name": "orange", "price": 4},
    {"name": "grape", "price": 5},
]

a = list(fruits | select(lambda fruit: fruit["price"]) | traverse)
print(a)


from pipe import groupby, select

a = list(
    (1, 2, 3, 4, 5, 6, 7, 8, 9)
    | groupby(lambda x: "Even" if x % 2 == 0 else "Odd")
    | select(lambda x: {x[0]: list(x[1])})
)
print(a)


from pipe import groupby, select, where

a = list(
    (1, 2, 3, 4, 5, 6, 7, 8, 9)
    | groupby(lambda x: "Even" if x % 2 == 0 else "Odd")
    | select(lambda x: {x[0]: list(x[1] | where(lambda x: x > 2))})
)
print(a)


from pipe import dedup

arr = [1, 2, 2, 3, 4, 5, 6, 6, 7, 9, 3, 3, 1]
a = list(arr, 1, dedup)
print(a)


from pipe import dedup

arr = [1, 2, 2, 3, 4, 5, 6, 6, 7, 9, 3, 3, 1]
a = list(arr, 1, dedup(lambda key: key < 5))
print(a)