If you need help reviewing Lambda Expressions, take a look at these resources:
Each question has a "Toggle Solution" button -- click it to reveal that question's solution.
Conceptual Questions
Question 1
What are some differences between def
statements and lambda
expressions?
Some differences between lambdas and def statements include:
- lambdas are expressions (they are a value), while defs are statements.
- lambdas can only be one liners
- lambdas are anonymous — they have no intrinsic names
Question 2
What are the intrinsic names of the following functions?
def cube(x):
return x * x * x
square = lambda x: x * x
The first function has an intrinsic name of cube
. The second function
does not have an intrinsic name, since it is a lambda. Note that
the intrinsic name is the name you should write in your environment
diagram frames!
What would Python print?
Question 3
>>> lambda x: x * x
______<function <lambda > at ...>
>>> g = lambda x: x**2'
>>> g(4)
______16
>>> (lambda x, y: x * y)(4, 5)
______20
Code-Writing questions
Question 4
Translate the following def statements into lambda expressions.
# 1
def square(x):
return x * x
# 2
def compose(f, g):
def h(x):
return f(g(x))
return h
# 1
square = lambda x: x * x
# 2
compose = lambda f, g: lambda x: f(g(x))
Question 5
Translate the following lambda expressions into def statements.
# 1
pow = lambda x, y: x**y
# 2
foo = lambda x: lambda y: lambda z: x + y * z
# 1
def pow(x, y):
return x**y
# 2
def foo(x):
def f(y):
def g(z):
return x + y * z
return g
return f
Environment Diagrams
Question 6
square = lambda x: x * x
higher = lambda f: lambda y: f(f(y))
higher(square)(5)
Question 7
a = (lambda f, a: f(a))(lambda b: b * b, 2)