Placeholder Image

Subtitles section Play video

  • A mysterious engineer once told me to sort a massive amount of data. When I

  • asked for the sorting function, I was told a function has no name. Is this

  • possible? Doesn't every function need a name? The answer is no. There are

  • functions that have no name at all. These nameless functions are known as

  • anonymous functions or lambda expressions. Today, we will learn how to

  • write and used lambda expressions in Python.

  • Get ready for some pithy anonymity.

  • Suppose you want to write a function that will compute the value of 3x plus 1.

  • The standard approach would be to define a function. Let's call it f with a single

  • input X. Next, you would return the value 3x plus 1. If you input 2, you get the

  • value 7, so it works nicely. Let us now do this using anonymous

  • functions. Before we get started, a quick note. Throughout this video we will use

  • the terms "anonymous functions" and "lambda expressions" interchangeably. They both

  • mean the same thing. To create a lambda expression, you type the keyword lambda,

  • followed by your inputs. Next, type a colon. Finally, enter an expression that

  • will be the return value. This anonymous function will take the input X and

  • return 3x plus 1, just like the earlier function f. There is a problem, however. We

  • cannot use this function because it does not have a name. It is, after all

  • anonymous. lambda is not the name of the function.

  • It is a Python keyword that says what follows is an anonymous function. So how

  • do you use it? One way is to give it a name. Let us call this lambda expression

  • G. Now, you can use this like any other function. If you input 2, you still get 7.

  • Let us now see a lambda expression with more than one input. Suppose you are

  • processing user data from a web registration form, and would like to

  • combine the first and last names into a single full name for displaying on the

  • user interface. We will call this lambda expression full name. This anonymous

  • function will have two inputs: first name and last name.

  • For both the first and last names, we will remove the leading and trailing

  • whitespace with the strip function. We will also ensure that only the first

  • letter of each string is capitalized with the title function. This is

  • necessary because humans are sloppy when typing. Notice we separated the first and

  • last names with a space. Let us now test this lambda expression.

  • You use it just like any other function. Outstanding. We should not judge Euler's

  • typing skills. This is the first time he has ever used a computer. Here is the

  • general way to create a lambda expression: you type the keyword lambda

  • followed by zero or more inputs. Just like functions, it is perfectly

  • acceptable to have anonymous functions with no inputs. Next, type a colon. Then

  • finally, you enter a single expression. This expression is the return value. You

  • cannot use lambda expressions for multi-line functions. Let us now see a

  • common use of lambda expressions where we do not give it a name. Suppose we have

  • a list of science fiction authors. We would like to sort this list by last

  • name. Notice that some of these authors have a middle name, while others have

  • initials. Our strategy will be to create an anonymous function that extracts the

  • last name, and uses that as the sorting value. Lists have a built-in method

  • called sort. To see how to use it call the help function on the method name. The

  • key argument is a function that will be used for sorting. We will pass it a

  • lambda expression. To access the last name, split the string into pieces

  • wherever it has a space. Next, access the last piece by index negative 1. As a

  • final precaution, convert the string to lowercase. This way, the sorting is not

  • case-sensitive. Trust me - some people do not know how to

  • use the shift key. The list is now in alphabetical order.

  • These names are a pleasure to read.

  • We must go deeper. Next we will write a function that makes functions.

  • Suppose you are working with quadratic functions. Perhaps you are

  • computing the trajectories of cannonballs - something you should know

  • how to do before becoming a pirate. To do this, let's write a function called build

  • quadratic function. The inputs are the three coefficients A, B, and C. Naturally,

  • we write a docstring. And with a single line we return an

  • anonymous quadratic function with these coefficients. Let's test this by creating

  • the function 2x squared plus 3x minus 5. If you test this for the input 0 1 & 2

  • you can see this function works correctly. And just for bites and giggles,

  • let's make and use a quadratic function without ever giving it a name. Let's

  • create a different function and then pass in the value 2. This code creates

  • the function 3x squared plus 1 and passes in the value 2 which should give

  • us 13... and it does. This is a useful demonstration, but it is not the most

  • readable code. Sometimes, an extra line is perfectly fine.

  • Lambda expressions are quite useful when you need a short, throwaway function.

  • Something simple that you will only use once.

  • Common applications are sorting and filtering data.

  • And while we are on the subject, did you know that Socratica has a sorted

  • list of Python videos? Unlike lambda expressions, we would prefer NOT to

  • remain anonymous... so if you know someone who is learning Python or SHOULD learn

  • Python, please, send them our way.

  • We will upgrade their knowledge banks as best we can...

A mysterious engineer once told me to sort a massive amount of data. When I

Subtitles and vocabulary

Click the word to look it up Click the word to find further inforamtion about it