<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 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
map function
filter function
reduce function
lambda functions
lambdas are anonymous functions, typicaly one liner functions
lambda arg 
Step1:  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)  --&gt; applies the function for each element in the sequence. The return sequence if of same length as input sequence
Step2:  filter function
filter function is used to filter out elements in a sequence based on a condition
filter(function, sequence)  --&gt; 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
<ASSISTANT_TASK:>
Python Code:
def doubler(input_number):
    return input_number*2
doubler(45)
temp_fn = lambda arg : arg*2
temp_fn(55)
type(temp_fn)
Explanation: 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
map function
filter function
reduce function
lambda functions
lambdas are anonymous functions, typicaly one liner functions
lambda arg : ret_val
End of explanation
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
#double using map and a function
l1_double_2 = list(map(doubler, l1))
l1_double_2
#double using map and a lambda function
l1_double_3 = list(map(lambda arg:arg*2, l1))
l1_double_3
Explanation: 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)  --&gt; applies the function for each element in the sequence. The return sequence if of same length as input sequence
End of explanation
#find only the odd numbers --> list comp way
l1_odd = [i for i in l1 if i%2 > 0]
l1_odd
# find only odd numbers --> filter with lambda way
l1_odd_2 = list(filter(lambda arg:arg%2>0, l1))
l1_odd_2
Explanation: filter function
filter function is used to filter out elements in a sequence based on a condition
filter(function, sequence)  --&gt; 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
End of explanation
<END_TASK>