YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Portuguese, Brazilian subtitles

← 03-56 Generators

03-56 Geradores

Get Embed Code
3 Languages

Subtitles translated from English Showing Revision 2 created 01/25/2013 by Lucilia Figueiredo.

  1. List comprehension é muito legal --
  2. é uma das partes de Python de que eu mais gosto.
  3. É uma maneira bem legal de programar. É bem declarativa:
  4. você apenas diz o que quer e o sistema faz para você.
  5. Infelizmente, têm uma desvantagem, que é que, até agora,
  6. tivemos que escrever a lista inicial, e isso é quse tanto trabalho quanto
  7. simplesmente escrever a lista que queremos.
  8. Se existisse uma maneira de gerar essa lista,
  9. especialmente se ela for muito grande, sem termos que escrevê-la explicitamente...
  10. Por exemplo, suponha que começamos com uma grande lista como [1,2,3,4,5,6,7].
  11. Eu digo que ela é grande -- é grande para mim:
  12. isso é pesado para o seu professor.
  13. E eu quero filtrá-la, de modo a obter apenas os números ímpares --
  14. então obtenho apenas esta parte.
  15. Vou mostrar a você uma maneira de fazer isso em Python.
  16. Escrevi aqui uma função chamada odds-only, em Python,
  17. que toma uma lista de números e itera sobre essa lista.
  18. Para cada n nesta lista de números, se n é ímpar --
  19. dividimos n por 2 e verificamos se o resto é 1
  20. ;5 dividido por 2 é 2 e o resto é 1, portanto é ímpar --
  21. colocamos esta parte nos nossos resultados
  22. Note que eu não escrevi return.
  23. yield é uma nova palavra-chave especial, que significa que podemos usar este tipo de função
  24. para produzir múltiplos resultados.
  25. Vamos imaginar que essa grande lista aqui seja numbers.
  26. Nós produzimos 1, não fazemos nada com 2, produzimos 3,
  27. não fazemos nada com 4, produzimos 5, nada com 6, e produzimos 7,
  28. e isso é exatamente a saída que desejamos.
  29. Você pode ver isso como uma maneira conveniente de filtragem.
  30. Escrevi aqui nossa função odds-only.
  31. Vou mostrtar, com o interpretador, como isso funciona.
  32. Estou usando list comprehension.
  33. Quero imprimir todo valor x que esteja em odds-oly([1,2,3,4,5]),
  34. e obtemos [1,3,5], como esperávamos.
  35. Vou também mostrar uma maneira aida mais fácilde fazer isso.
  36. É bem legal!.
  37. Escrevi aqui uma list comprehension:
  38. quero [x for x in [1,2,3,4,5] ],
  39. ms aqui à direita pus este tipo de condição,
  40. uma `guarda', ou predicado, como dizemos em matemática,
  41. e isso nos diz que eu quero produzir apenas
  42. aqueles números para os quais o predicado é TRUE.
  43. Apenas inclua x na resposta se x é um número ímpar.
  44. E, veja!, obtemos a resposta que queríamos.
  45. Escrevi x algumas vezes, mas posso usar fórmulas
  46. arbitrariamente mais complicadas.
  47. Aqui, eu pego todos os número ímpares e os multiplico por 2.
  48. Como 1,3,5 são os número ímpares, 2,6,10 são os resultados de multiplicá-los por 2.
  49. Eu adoro list comprehension e você também vai gostar.
  50. Uma função como odds-only -- que usa yield
  51. para retornar, potencialmente, múltiplas respostas -- é chamada de um gerador,
  52. porque pode ser usada para gerar uma lista, ou enumeração.