# Productivity hacks for Python

These are good to know shortcuts and methods that will reduce the need for writing explicit loops and condition checks. The comprehensions explained in cheat sheet 1 is a start, and falls under this category.

## Productivity functions

### lambda functions

lambdas are anonymous functions, typicaly one liner functions

``lambda arg : ret_val``
``````

In :

def doubler(input_number):
return input_number*2

``````
``````

In :

doubler(45)

``````
``````

Out:

90

``````
``````

In :

temp_fn = lambda arg : arg*2

``````
``````

In :

temp_fn(55)

``````
``````

Out:

110

``````
``````

In :

type(temp_fn)

``````
``````

Out:

function

``````

It looks silly now, but lambdas work great with `map` and other productivity functions. You can have other methods and functions that do the heavy lifting and call them in a particular order from a lambda

### map function

The `map` function will perform an operation on all elements of an input list. You can execute a function on all elements of a list without a loop, like a comprehension.

``map(function, sequence)  --> applies the function for each element in the sequence. The return sequence if of same length as input sequence``
``````

In :

l1 = [1,2,3,4,5,6,7]

#to double elements in this list using list comp
l1_double = [i*2 for i in l1]
l1_double

``````
``````

Out:

[2, 4, 6, 8, 10, 12, 14]

``````
``````

In :

#double using map and a function
l1_double_2 = list(map(doubler, l1))
l1_double_2

``````
``````

Out:

[2, 4, 6, 8, 10, 12, 14]

``````
``````

In :

#double using map and a lambda function
l1_double_3 = list(map(lambda arg:arg*2, l1))
l1_double_3

``````
``````

Out:

[2, 4, 6, 8, 10, 12, 14]

``````

### filter function

`filter` function is used to filter out elements in a sequence based on a condition

``````filter(function, sequence)  --> applies the function for each element in sequence, but the return sequence is same or smaller than input based on the condition in the `function`.
The function should return a bool``````
``````

In :

#find only the odd numbers --> list comp way
l1_odd = [i for i in l1 if i%2 > 0]
l1_odd

``````
``````

Out:

[1, 3, 5, 7]

``````
``````

In :

# find only odd numbers --> filter with lambda way
l1_odd_2 = list(filter(lambda arg:arg%2>0, l1))
l1_odd_2

``````
``````

Out:

[1, 3, 5, 7]

``````
``````

In [ ]:

``````