Intro to Python Lambda

Lambdas are simply anonymous functions for Python. We often don't want to write a whole new function with a name if the function itself only consists of one line of code. It is tedious, even though it might be less scary to see.

g = lambda x: x ** 2

The best way to read this is that for this iterable x, multiply each object in x to the power of 2 and return that value.

Alternatively it could be read as something like this:

g = def square(x):
    return x ** 2

Do beware, the above is just a visual heuristic and it is not valid Python syntax.

Speaking of heuristics, let's look at another lambda function that deals with A.I. heuristics.

Material: http://ai.berkeley.edu/search.html

h = lambda x: heuristic(x[0], problem)

heuristic is a function that takes in a node, and the search problem. But, never mind those two.

heuristic returns a number, which represents the distance from the node to the goal node. You can think of the search problem as a tree or graph that contains these nodes.

Anyhow, to demo-test heuristic, you can simply call:

print h( (problem.getStartState(),0,0) )

Another way to call:

print heuristic(problem.getStartState(), problem)

They both return the same heuristic number (Integer). The difference? When h is called, only the first parameter is used, namely the problem.getStartState(). The two other parameters in the tuple that h passes is ignored. heuristic doesn't take tuples, after all. They only take a node and the search problem.