Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Conheça três módulos Python que vão te fazer um...

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →

Conheça três módulos Python que vão te fazer um programador melhor: itertools, functools e collections

Que Python é uma linguagem fácil e cheia de recursos, você já sabe. Agora, como você pode usar os módulos padrão da linguagem para escrever códigos ainda melhores? Conheça as bibliotecas "itertools", "functools" e "collections" e fique maravilhado com as infinitas possibilidades de aplicações que deixarão seu código mais elegante, flexível e pythonico!

Avatar for Gilliano Menezes

Gilliano Menezes

March 24, 2022

More Decks by Gilliano Menezes

Other Decks in Programming

Transcript

  1. Conheça três módulos Python que vão te fazer um programador

    melhor: itertools, functools e collections Março 2022 1
  2. Itertools Como nos ajuda? 5 ➜ Cria iteradores complexos •

    tempo de execução mais rápido • uso eficiente de memória ➜ Forma uma “álgebra de iteradores” tornando possível construir ferramentas sucintas e eficientes em Python puro
  3. 6 Cycle Desafio 1 Faça um iterador retornando elementos do

    iterável e salvando uma cópia de cada um. Quando o iterável estiver esgotado, retorne elementos da cópia salva. Repete indefinidamente. Ex: cycle('ABCD') --> A B C D A B C D A B C D ...
  4. 8 Filtro Desafio 2 Faça um iterador que filtre elementos

    de iteráveis retornando apenas aqueles para os quais o predicado é False. Se o predicado for None, retorne os itens que não são falsos. Ex: filterfalse(lambda x: x%2, range(10)) --> 0 2 4 6 8
  5. 10 agrupamento Desafio 3 Dada uma lista de entradas de

    valores e um inteiro positivo n, escreva uma função que divida as entradas em grupos de comprimento n. Ex: se inputs = [1, 2, 3, 4, 5, 6] e n = 2, sua função deve retornar [(1, 2), (3, 4), (5, 6)]
  6. 11 agrupamento Desafio 3 Mas… o que acontece quando você

    tenta passar uma lista com, digamos, 100 milhões de elementos?
  7. Itertools Conclusão 15 Existem duas razões principais pelas quais essa

    “álgebra de iteradores” é útil: • eficiência de memória aprimorada (via lazy evaluation) • tempo de execução mais rápido.
  8. functools 17 O módulo functools é para funções de ordem

    superior: funções que atuam ou retornam outras funções
  9. 18 Uso de lru_cache functools Crie uma função que retorna

    o total da soma da sequência de Fibonacci com base no valor de entrada. Ex: fibonacci(6) -> 8
  10. 19 singledispatch functools Transforma uma função em uma função genérica

    de single dispatch, ou sejam a implementação é escolhida com base no tipo do argumento.
  11. 20 singledispatch functools Escreva uma função que exibe a soma

    de dois inteiros se o tipo for inteiro ou concatena se os tipos de entrada forem uma lista. Ex: add(1,1) -> “A soma e: 2” add(“1”, “1”) -> “Concatenando fica: 11”
  12. collections 22 Este módulo implementa tipos de dados de contêineres

    especializados que fornecem alternativas aos contêineres embutidos do Python: dict, list, set e tuple.
  13. 23 Contando letras em um arquivo de texto collections ➜

    Digamos que você tenha um arquivo que contém algum texto. Você precisa contar o número de vezes que cada letra aparece no texto. Por exemplo, digamos que você tenha um arquivo chamado pyzen.txt com o seguinte conteúdo:
  14. 24 Contando letras em um arquivo de texto collections Vamos

    incrementar mais um pouco esse exemplo…
  15. 25 Contando letras em um arquivo de texto collections Vamos

    incrementar mais um pouco esse exemplo…
  16. Conclusão 27 ➜ A biblioteca padrão do Python é muito

    extensa, oferecendo uma ampla gama de recursos ➜ Fornecem soluções padronizadas para muitos problemas que ocorrem em programação cotidiana ➜ Conhecer e esses módulos te permitirá escrever códigos mais limpos e otimizados
  17. Referências 29 Python Fluente: Programação Clara, Concisa e Eficaz Luciano

    Ramalho Documentação oficial | Python 3.10.3 https://docs.python.org/pt-br/3/library/itertools.html https://docs.python.org/pt-br/3/library/functools.html https://docs.python.org/pt-br/3/library/collections.html Real Python https://realpython.com/python-itertools/ https://realpython.com/python-counter/