Os 3 principais recursos do Python que você não conhecia (provavelmente)

Olá Habr! Apresento a você a tradução do artigo “As três principais funções de Python que você não conhece (provavelmente)” de Dario Radečić.

Sendo uma das línguas mais populares do século 21, o Python certamente possui muitos recursos interessantes que valem a pena explorar em detalhes. Três deles serão considerados hoje, cada um teoricamente, e depois com exemplos práticos.

imagem

A principal razão pela qual quero falar sobre essas funções é porque elas ajudam a evitar a gravação de loops . Os ciclos podem ser caros em alguns casos e, além disso, esses recursos ajudarão a aumentar a velocidade.

Aqui estão as funções que serão discutidas no artigo:

1. map ()
2. filter ()
3. reduz ()

Mesmo que você já tenha ouvido falar sobre essas funções, não há nada de errado em reforçar seu conhecimento com um pouco mais de teoria e exemplos.

Então, sem mais delongas ... Vamos começar!

mapa ()


A função map () usa como parâmetro outra função junto com alguma matriz. A ideia é aplicar uma função (passada como argumento) a cada elemento da matriz.

Isso é útil por dois motivos:

  1. Você não precisa escrever um loop
  2. É mais rápido que um loop

Vamos ver isso em ação. Vou declarar uma função "num_func ()" que aceita um único número como parâmetro. Esse número é elevado ao quadrado, divisível por 2 e retornado como tal. Note que as operações foram escolhidas arbitrariamente, você pode fazer qualquer coisa dentro da função:

imagem

Agora vamos declarar uma matriz de números à qual queremos aplicar “num_func ()”. Observe que o próprio “map ()” retornará o objeto de exibição , portanto você precisará convertê-lo em uma lista:

imagem

Parece que o processo foi concluído com êxito. Não há nada revolucionário aqui, mas seria bom evitar ciclos sempre que possível.

filter ()


Aqui está outro recurso decente que poupará tempo - por escrito e em execução. Como o nome indica, a idéia é armazenar na matriz apenas os elementos que satisfazem uma determinada condição .

Como no caso de "map ()", podemos declarar uma função antecipadamente e depois passá-la para "filter ()" junto com um objeto iterável (por exemplo, uma lista).

Vamos ver isso em ação. Eu fui além e declarei uma função "more_than_15 ()", que, como o nome indica, retornará "true" se o elemento especificado como parâmetro for maior que 15:

imagem

Em seguida, declaramos uma matriz de números e os passamos como o segundo parâmetro para a função " filter () ":

imagem

Como esperado, apenas três valores atendem a essa condição. Mais uma vez, nada de revolucionário aqui, mas parece muito melhor do que o ciclo.

reduzir ()


Agora "reduza ()". É um pouco diferente dos dois anteriores. Primeiro, precisamos importá-lo do módulo functools. A idéia principal é que ela aplique essa função a uma matriz de elementos e, como resultado, retornará um único valor .

A última parte é crucial - “reduzir ()” não retorna uma matriz de elementos, sempre retorna um único valor. Vamos dar uma olhada no diagrama para concretizar esse conceito:

imagem

Aqui está a lógica escrita, caso o diagrama não seja 100% claro:

  1. 5 adicionado a 10, resulta em 15
  2. 15 adicionado a 12, resulta em 27
  3. 27 é adicionado a 18, o resultado é 45
  4. 45 é adicionado a 25, o resultado é 70

E 70 é o valor que retorna. Para começar com a implementação do código, vamos importar a função de redução do módulo functools e declarar uma função que retorne a soma de dois números :

imagem

Agora podemos retornar ao diagrama no código e garantir que tudo funcione como deveria:

imagem

Até você ir para a seção de comentários, eu sei perfeitamente que existem outras maneiras de resumir os itens da lista. Este é o exemplo mais simples para demonstrar como uma função funciona.

Antes que partas:


Espero que você possa, de alguma forma, usar essas três funções em sua vida diária. O aumento da velocidade pode não ser significativo - depende da quantidade de dados com que você trabalha - mas o código ficará melhor com menos loops.

Se você tiver outros exemplos, sinta-se à vontade para compartilhá-los na seção de comentários.

Obrigado pela leitura.

All Articles