Ver Feed RSS

root@blog:/# chmod o+r *

[Curso de Python] Conhecendo o for... in...

Avalie este Post de Blog

Antes de prosseguir leia os artigos anteriores aqui.



Olá pessoal! Hoje vamos ver mais uma modalidade de laço de repetição: for.

Esse laço é o mais utilizado em Python. O laço while na verdade é utilizado somente em alguns casos especiais, que o for não conseguiria resolver. Vamos deixar de papo e ir logo ao assunto!


Conhecendo o for... in...




O laço for, diferente do laço while, não utiliza uma condição. Ele precisa somente de um argumento iterável e de uma variável para repassar o item de cada iteração. O for sempre trabalha em conjunto com a instrução in. A sua estrutura básica é a seguinte:
Código :
  [FONT=Arial][FONT=Arial]for VARIAVEL in ITEM_ITERAVEL:[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]   FAZ_ALGO[/FONT][/FONT]
Vamos a um exemplo no modo interativo do Python:
Código :
  [FONT=Arial][FONT=Arial]>>> lista = ['este', 'e', 'um', 'teste'][/FONT][/FONT]
  [FONT=Arial][FONT=Arial]>>> for item in lista:[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]...     print item[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]...[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]este[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]e[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]um[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]teste[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]>>> [/FONT][/FONT]
O laço for, para quem está acostumado com o for de C/C++, chega a ser um absurdo, algo irreal. Eu também tive essa sensação! Sugiro a todos fazer como eu fiz, aceitar que o for magicamente sabe onde a variável iteravel começa e termina. Dessa mesma forma sobre natural, a cada iteração o for pega um ítem da lista e joga dentro da variável item.

Pronto, é assim que o for funciona. Ele reduz espantosamente o esforço do programador, identificando o inicio e o fim do objeto iterável e repassando cada item desse objeto em uma variável previamente prevista. Com o for você praticamente esquece que a função len() existe.

O for serve também para fazer iteração em strings. Conforme abaixo:
Código :
  [FONT=Arial][FONT=Arial]>>> texto = 'este e um teste!'[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]>>> for letra in texto:[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]...     print '->',letra[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]...[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]-> e[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]-> s[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]-> t[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]-> e[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]->[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]-> e[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]->[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]-> u[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]-> m[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]->[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]-> t[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]-> e[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]-> s[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]-> t[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]-> e[/FONT][/FONT]
  [FONT=Arial][FONT=Arial]-> ![/FONT][/FONT]
  [FONT=Arial][FONT=Arial]>>> [/FONT][/FONT]
Como podem ver podemos alterar livremente a variável para um nome que seja compatível a um item que estamos iterando. Por exemplo, se vamos iterar sobre uma lista de palavras, identificamos a variável como palavra. Se vamos iterar sobre uma lista que contêm todos os meses do ano, vamos utilizar uma variável com o nome mês, e assim sucessivamente.

É isso ai pessoal. Por hoje é só! Vamos conhecer o for aos poucos.

Atualizado 01-09-2010 em 08:52 por Magnun

Categorias
Artigos , Cursos , Curso de Python

Comentários

  1. Avatar de edsonsguizzato
    É tão simples, mas tão simples que, devido ao costume com C, Java e companhia, tive que ler mais de uma vez para acreditar que isso era mesmo o for.
  2. Avatar de Magnun
    Olá edsonsguizzato,

    Eu tive a mesma sensação. É tão simples e intuitivo que eu tive dificuldade de aprender da primeira vez.

    Até mais...
  3. Avatar de victoreng
    É nunca imaginei um for dessa maneira, o for vem repetindo seu formato padrão em anos....mas aqui simplesmente jogou fora tudo que conhecia e colocou algo muito mais simples, mas como você falou Magnum de tão simples me surgiu uma dúvida, com esse for se repete igual ao outros na parte de ele fazer uma verificação antes de começar o enlace? ou não ele fica como o ""do...while"" do C++ e afins?? ele executa sempre uma vez, o costume do antigo for atrapalha um pouco..heheh

    outra coisa, estava esquecendo, como eu consigo tipo fazer dele um contador como antes eu fazia

    Antigo for:
    for(i=0;i<=10;i++)

    Python:
    eu tentei mas não consegui, não dá mesmo?

    abraços
    Atualizado 01-09-2010 em 07:03 por victoreng (esqueci mais algumas coisas no comentário.)
  4. Avatar de Magnun
    Olá victoreng,

    Como eu disse, de tão simples ele gera dúvidas! Mas tente encarar as coisas com simplicidade. Quanto à verificação do for ele faz a verificação antes de começar o loop. Um exemplo simples para entender:
    Código :
    >>> lista = [1,2,3]
    >>> for item in lista:
    ...     print 'item:',item
    ...
    item: 1
    item: 2
    item: 3
    >>>
    >>> lista = []
    >>> for item in lista:
    ...     print 'item:',item
    ...
    >>>
    Como pode ver, quando a lista está vazia ele simplesmente nem entra no for.

    O for do Python é completamente diferente do for em C/C++. Ele não trabalha com condição, ele trabalha com iteração. Mas se você quiser imaginar o for do Python similar ao for do C/C++, imagine que "por dentro" da linha for letra in texto ele faz algo mais ou menos assim: for (i=0,i<=len(texto),i++)

    Só que ao invés de você trabalhar com o i o for do Python ainda é mais bonzinho e te retorna o item do texto correspondente ao numero i. É aquilo que eu disse, é melhor simplesmente aceitar que ele vai sempre funcionar. Na aula após essa eu comentei um pouco mais sobre o comportamento do for. Dá uma olhada aqui: Entendendo o For

    Espero que tenha entendido. Qualquer coisa é só entrar em contato!
    Até mais...
  5. Avatar de fabraga
    Muito bom!!

+ Enviar Comentário



Visite: BR-Linux ·  VivaOLinux ·  Dicas-L