A function can be expressed in a concise way called lambda expression. More generically, it's called an "anonymous function" because it doesn't have a name.
The function syntax is:
def the_name(parameter): return parameter * 2
The lambda syntax is:
lambda x: x * 2
As you see it has no name, and it's very concise.
It's particularly useful in order to give a minimalist function directly as a parameter of another function, typically, the builtin sorted.
>>> li = [('antoine', 18), ('julien', 42), ('kevin', 9)] >>> sorted(li, key=lambda x: x) [('kevin', 9), ('antoine', 18), ('julien', 42)]
In this exercise, you'll write a function named
two parameters: an
iterable, typically a list, and a
filtered should return an
iterable (a list for example).
>>> items = [1, 2, 3, 4, 5, 6] >>> even = filtered(items, lambda x: x % 2 == 0) >>> odds = filtered(items, lambda x: x % 2 == 1) >>> even [2, 4, 6] >>> odds [1, 3, 5]
filtered function should also work if passed a function name
instead of a
items = [1, 2, 3, 4, 5, 6] def is_even(x): return x % 2 == 0 def is_odd(x): return x % 2 == 1 even = filtered(items, is_even) # 2 4 6 odds = filtered(items, is_odd) # 1 3 5
(Now you see why we use lambda.)
filtered function, you'll write three lines using your
filtered function and lambdas:
Numbers should be separated by comas, one list per line, such as:
0, 3, 6, 9, ... 0, 5, 10, 15, ... 0, 15, 30, 45, ...
You must allow anyone to
import your file in order to use the
filtered function without having to print the three lines of numbers.
To do so, you'll have to put the instructions to print these three lines within an
if __name__ == '__main__':.
This is very common statement in Python, used exactly for this: Allowing to import a file without executing a part of it. This part is typically used for running some tests, like you just did.