9.9. Lambda

  • Lambda - Anonymous functions

9.9.1. Syntax

lambda <arguments>: <expression>

9.9.2. Definition

lambda x: x**2
lambda x: x % 2 == 0
lambda x,y: x+y

9.9.3. Examples

9.9.3.1. Example 1

print(bool(lambda x: x % 2 == 0))
is_even = lambda x: x % 2 == 0
is_even(4)
def is_even(x):
    return x % 2 == 0

is_even(4)

9.9.3.2. Example 2

DATA = [1, 2, 3, 4]


def is_even(x):
    if x % 2 == 0:
        return True
    else:
        return False


output = filter(is_even, DATA)
print(list(output))
# [2, 4]
DATA = [1, 2, 3, 4]

output = filter(lambda x: x % 2 == 0, DATA)
print(list(output))
# [2, 4]

9.9.3.3. Example 3

DATA = [
    {'user': 'twardowski', 'uid': 1000},
    {'user': 'root', 'uid': 0},
]

def is_system_user(data):
    if data['uid'] < 1000:
        return True
    else:
        return False

system_users = []

for user in DATA:
    if is_system_user(user):
        system_users.append(user)

print(system_users)
# [{'user': 'root', 'uid': 0}]
DATA = [
    {'user': 'twardowski', 'uid': 1000},
    {'user': 'root', 'uid': 0},
]


system_users = filter(lambda x: x['uid'] < 1000, DATA)

print(list(system_users))
# [{'user': 'root', 'uid': 0}]

9.9.4. Assignments

9.9.4.1. Built-in Generators

  • Complexity level: easy

  • Lines of code to write: 6 lines

  • Estimated time of completion: 15 min

  • Solution: solution/lambda_task.py

English
  1. Using generator expression to create output: List[int] with numbers from 1 to 33 which are divisible by 3

  2. Filter output to contain only odd numbers

  3. Cube all numbers in output

  4. Calculate arithmetic mean from output

  5. Użyj funkcji lambda

Polish
  1. Używając wyrażenia generatorowego stwórz output: List[int] z liczbami z zakresu 1 do 33 podzielnymi przez 3

  2. Przefiltruj output aby zawierał tylko liczby nieparzyste

  3. Podnieś wszystkie liczby w output do sześcianu

  4. Oblicz średnią arytmetyczną z output

  5. Użyj funkcji lambda

Hint
  • mean = sum(...) / len(...)

  • type cast to list() before calculating mean to expand generator