Usando Lambda com Funções Embutidas
As funções lambda tornam-se particularmente poderosas quando combinadas com as funções embutidas do Python, como map(), filter() e sorted(). Essas combinações permitem que você escreva código eficiente para transformação e manipulação de dados.
A Função map() com Lambda
A função map() aplica uma função fornecida a cada item em um iterável (como uma lista) e retorna um objeto map com os resultados.
-
Crie um novo arquivo chamado lambda_builtin.py no diretório /home/labex/project.
-
Adicione o seguinte código para demonstrar o uso de map() com lambda:
## Using map() with a lambda function to square each number in a list
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x**2, numbers))
print("Original numbers:", numbers)
print("Squared numbers:", squared_numbers)
- Execute seu código:
python3 ~/project/lambda_builtin.py
Você deve ver:
Original numbers: [1, 2, 3, 4, 5]
Squared numbers: [1, 4, 9, 16, 25]
A Função filter() com Lambda
A função filter() cria um novo iterável com elementos que satisfazem uma condição (a função retorna True).
- Adicione o seguinte código ao seu arquivo
lambda_builtin.py:
## Using filter() with a lambda function to find even numbers
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print("All numbers:", numbers)
print("Even numbers:", even_numbers)
## Using filter() to find names that start with 'J'
names = ["Alice", "Bob", "John", "Jane", "Michael", "Jessica"]
j_names = list(filter(lambda name: name.startswith('J'), names))
print("All names:", names)
print("Names starting with J:", j_names)
- Execute seu código atualizado:
python3 ~/project/lambda_builtin.py
Você deve ver uma saída adicional:
All numbers: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Even numbers: [2, 4, 6, 8, 10]
All names: ['Alice', 'Bob', 'John', 'Jane', 'Michael', 'Jessica']
Names starting with J: ['John', 'Jane', 'Jessica']
A Função sorted() com Lambda
A função sorted() permite que você ordene iteráveis usando uma função chave personalizada, que é onde as funções lambda são muito úteis.
- Adicione o seguinte código ao seu arquivo
lambda_builtin.py:
## Using sorted() with lambda to sort by the second element of tuples
pairs = [(1, 5), (3, 2), (5, 7), (2, 9), (4, 1)]
sorted_by_second = sorted(pairs, key=lambda pair: pair[1])
print("Original pairs:", pairs)
print("Sorted by second element:", sorted_by_second)
## Using sorted() with lambda to sort strings by length
words = ["apple", "banana", "cherry", "date", "elderberry", "fig"]
sorted_by_length = sorted(words, key=lambda word: len(word))
print("Original words:", words)
print("Sorted by length:", sorted_by_length)
- Execute seu código atualizado:
python3 ~/project/lambda_builtin.py
Você deve ver uma saída adicional:
Original pairs: [(1, 5), (3, 2), (5, 7), (2, 9), (4, 1)]
Sorted by second element: [(4, 1), (3, 2), (1, 5), (5, 7), (2, 9)]
Original words: ['apple', 'banana', 'cherry', 'date', 'elderberry', 'fig']
Sorted by length: ['fig', 'date', 'apple', 'cherry', 'banana', 'elderberry']
Combinando Múltiplas Funções Lambda
Você também pode encadear ou combinar múltiplas operações usando funções lambda:
- Adicione o seguinte código ao seu arquivo
lambda_builtin.py:
## Combining map and filter with lambda functions
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
## First square the numbers, then filter for values greater than 20
result = list(filter(lambda x: x > 20, map(lambda x: x**2, numbers)))
print("Original numbers:", numbers)
print("Squared numbers > 20:", result)
- Execute seu código atualizado:
python3 ~/project/lambda_builtin.py
Você deve ver uma saída adicional:
Original numbers: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Squared numbers > 20: [25, 36, 49, 64, 81, 100]
As funções lambda com funções embutidas como map(), filter() e sorted() fornecem uma maneira poderosa de processar dados com código mínimo. No próximo passo, exploraremos aplicações mais práticas das funções lambda.