Explorando Funções Embutidas do Python com Parâmetro `key`

O Python oferece diversas funções embutidas poderosas que podem ter seu comportamento modificado através do parâmetro key. Este parâmetro aceita uma função que é aplicada a cada item de um iterável antes das comparações serem feitas, permitindo personalização na forma como os elemantos são processados.

1. max() - Encontrando o Maior Elemento

A função max() retorna o maior item em um iterável ou o maior entre dois ou mais argumentos. Quando o parâmetro key é utilizado, a comparação é baseada no resultado dessa função aplicada a cada elemento.


lista_numeros = [1, 2, 3, -4]
print(f"Maior valor na lista: {max(lista_numeros)}")

# Usando 'key' com abs para encontrar o número com maior valor absoluto
print(f"Número com maior valor absoluto: {max(lista_numeros, key=abs)}")
# Saída:
# Maior valor na lista: 3
# Número com maior valor absoluto: -4

2. min() - Encontrando o Menor Elemento

Similarmente, min() retorna o mener item em um iterável ou o menor entre múltiplos argumentos. O key funciona da mesma forma, determinando o critério para a menor comparação.


lista_numeros = [-1, 0, 1, 2]
print(f"Menor valor na lista: {min(lista_numeros)}")
# Saída:
# Menor valor na lista: -1

3. filter() - Selecionando Elementos Condicionalmente

A função filter() constrói um iterador a partir daqueles elementos de um iterável para os quais uma função retorna verdadeiro. O parâmetro key aqui é a própria função de teste.


def eh_impar(numero):
    return numero % 2 != 0

numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# Em Python 3, filter retorna um iterador, que precisa ser convertido para lista se necessário
impares = list(filter(eh_impar, numeros))
print(f"Números ímpares: {impares}")

# Exemplo com lambda para remover a letra 'a' de uma string
texto = 'jason lv'
sem_a = ''.join(filter(lambda char: char != 'a', texto))
print(f"Texto sem 'a': {sem_a}")
# Saída:
# Números ímpares: [1, 3, 5, 7, 9]
# Texto sem 'a': json lv

4. map() - Aplicando Transformações a Elementos

A função map() aplica uma função a cada item de um iterável (ou múltiplos iteráveis) e retorna um iterador com os resultados. O primeiro argumento de map() é a função a ser aplicada.


def quadrado(numero):
    return numero ** 2

sequencia = [1, 2, 3, 4, 5, 6]
quadrados = list(map(quadrado, sequencia))
print(f"Quadrados dos números: {quadrados}")

# Exemplo com lambda para aplicar transformações condicionais
transformados = list(map(lambda x: x * 10 if x > 3 else x / 2, sequencia))
print(f"Números transformados: {transformados}")
# Saída:
# Quadrados dos números: [1, 4, 9, 16, 25, 36]
# Números transformados: [0.5, 1.0, 1.5, 40, 50, 60]

5. sorted() - Ordenando Iteráveis de Forma Flexível

Diferente do método sort() de listas, a função sorted() retorna uma nova lista ordenada a partir dos itens em qualquer iterável. Ela oferece os parâmetros key e reverse para customização.

  • key: Uma função que é chamada para cada elemento antes de fazer as comparações. O valor retornado pela função é usado como critério de ordenação.
  • reverse: Um booleano. Se True, a lista é ordenada em ordem decrescente. O padrão é False (ordem crescente).

lista_desordenada = [3, 2, 1, 4, 5, 6]
ordenada_desc = sorted(lista_desordenada, reverse=True)
print(f"Lista ordenada decrescente: {ordenada_desc}")

ordenada_asc = sorted(lista_desordenada) # Padrão é crescente
print(f"Lista ordenada crescente: {ordenada_asc}")

# Ordenando strings pelo comprimento usando 'key'
lista_strings = ['adf ee', 'zcv', 'qwer', 'a s s w']
ordenada_por_len = sorted(lista_strings, key=len)
print(f"Strings ordenadas por comprimento: {ordenada_por_len}")
# Saída:
# Lista ordenada decrescente: [6, 5, 4, 3, 2, 1]
# Lista ordenada crescente: [1, 2, 3, 4, 5, 6]
# Strings ordenadas por comprimento: ['zcv', 'qwer', 'adf ee', 'a s s w']

Utilizar o parâmetro key em funções como max(), min(), filter(), map() e sorted() permite um controle refinado sobre como os dados são processados e ordenados, tornando o código Python mais expressivo e eficiente.

Tags: Python funções embutidas key max min

Publicado em 6-6 03:10 por Thomas